Advertisement
User8

Thumbnail-Mosaik für GuttenPlag

Mar 15th, 2011
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.50 KB | None | 0 0
  1. ####### START of documentation #######
  2.  
  3. ==> update.sh <==
  4.  
  5. #!/bin/bash
  6. #
  7. # Download all Wiki pages where title starts with 'Fragment ',
  8. # plus some AWK processing, some ImageMagick and gnuplotting
  9. #
  10. # http://de.guttenplag.wikia.com/wiki/Benutzer:User8, March 2011
  11.  
  12. # Change to working directory
  13. cd ${HOME}/tmp/gutt/download || exit 1
  14.  
  15. # The current date and time, in 2 formats
  16. export DATE=$(date +'%Y%m%d_%H%M')
  17. export DAT2=$(date +'%d.%m.%Y %H:%M')
  18.  
  19. echo
  20. echo $DAT2
  21. echo
  22.  
  23. ######## START download of Fragment Pages ########
  24.  
  25. # Get batch #1, via a wikia.com API query. The built-in page limit is 50.
  26.  
  27. NUM=0 ; BATCH=$(printf "%03d" $NUM)
  28.  
  29. echo
  30. echo "Downloading Fragment pages from de.guttenplag.wikia.com (batch ${BATCH})"
  31. echo
  32.  
  33. wget -nv -O batch_${DATE}_${BATCH}.xml "http://de.guttenplag.wikia.com/api.php?action=query&format=xml&prop=revisions&rvprop=content&generator=allpages&gaplimit=50&gapprefix=Fragment%20"
  34. CONTINUE=$(xml sel -T -t -m /api/query-continue/allpages -v @gapfrom batch_${DATE}_${BATCH}.xml | sed 's/ /%20/g')
  35.  
  36. # Get more batches of 50 pages, until /api/query-continue/allpages is empty
  37. while [[ -n "$CONTINUE" ]]; do
  38.  
  39. NUM=$((++NUM)) ; BATCH=$(printf "%03d" $NUM)
  40.  
  41. echo
  42. echo "Downloading Fragment pages from de.guttenplag.wikia.com (batch ${BATCH})"
  43. echo
  44.  
  45. wget -nv -O batch_${DATE}_${BATCH}.xml "http://de.guttenplag.wikia.com/api.php?action=query&format=xml&prop=revisions&rvprop=content&generator=allpages&gaplimit=50&gapprefix=Fragment%20&gapfrom=$CONTINUE"
  46. CONTINUE=$(xml sel -T -t -m /api/query-continue/allpages -v @gapfrom batch_${DATE}_${BATCH}.xml | sed 's/ /%20/g')
  47.  
  48. done
  49.  
  50. # Get the actual page content out of the downloaded XMl files, using xmlstarlet 1.0.5
  51. xml sel -T -t -m /api/query/pages/page/revisions/rev -v ../../@title -o '&#9;' -v "." -n batch_${DATE}_???.xml |
  52. pgawk --profile=fragment_${DATE}.out '
  53.  
  54. BEGIN { FS = OFS = "\t" ; q = "\"" ; IGNORECASE = 1}
  55.  
  56. /val_1=/ {
  57. regex = "VerschärftesBauernOpfer|BauernOpfer|HalbsatzFlickerei|KomplettPlagiat|ShakeAndPaste|StrukturPlagiat|Verschleierung|ÜbersetzungsPlagiat"
  58.  
  59. gsub(/val_|cswikitext/, "\t&") # make tab delimited fields
  60. split($3, p, q) # page number value = val_1
  61. split($4, l, q) # line number value = val_2
  62. split($9, c, q) # category = val_7
  63. split($NF, k, q) # Kategorien = cswikitext, often 2 cswikitext attributes :-(
  64. gsub(/&#13;&#10;/, "", k[2]) # remove CRLF representation between Kategorien
  65.  
  66. # If we find one of our PlagiatsKategorien and page number between 15 and 407
  67. if ( ($9 ~ regex || $NF ~ regex ) && p[2] > 14 && p[2] < 408 )
  68. print $1, p[2], l[2], c[2], k[2]
  69. else
  70. print > "fragmente_ignored.list"
  71.  
  72. next
  73. }
  74. { print > "fragmente_ignored.list" }' | sort > fragment_$DATE.list
  75.  
  76. echo
  77. echo "Processing Fragment entries, line by line"
  78. echo
  79.  
  80. # Process Fragments line by line, generating a line-oriented output file
  81. # Which is the source file for Thumbnails and gnuplot images
  82. pgawk --profile=zeilen_${DATE}.out -f ../scripts/zeilen.awk fragment_$DATE.list > zeilen_${DATE}.list
  83.  
  84. # Remember # of Fragmente
  85. export FRAGMENTS=$( awk 'END{print NR}' fragment_${DATE}.list )
  86.  
  87. # Remember # of Plagzeilen
  88. export PLAGZEILEN=$( awk -F"\t" '! a[$2,$5]++{zeile++}END{print zeile}' zeilen_${DATE}.list )
  89.  
  90. # Remember % Plagzeilen
  91. export PLAGPROZENT=$( awk -v pz=$PLAGZEILEN 'BEGIN { printf "%.1f", 100 * pz / 16325 }' )
  92.  
  93. echo
  94. echo " ---------------------------------------------------------------"
  95. echo " Fragmente = $FRAGMENTS | PlagZeilen = $PLAGZEILEN | PlagProzent = $PLAGPROZENT"
  96. echo " ---------------------------------------------------------------"
  97. echo
  98.  
  99. ######## START Image processing ########
  100.  
  101. cd ../thumb || exit 1
  102.  
  103. echo
  104. echo "Doing the thumbnail images..."
  105. echo
  106.  
  107. # Generating the coloured boxes
  108.  
  109. mv -u *.png attic/
  110. cp -p ../images/seite-???.png .
  111.  
  112. # Output of colorise.awk is piped though the shell, zeilenpositionen.txt is a 1:1 copy from the Wiki's [[Zeilenpositionen]] page
  113. pgawk --profile=colorise_${DATE}.out -f ../scripts/colorise.awk ../scripts/zeilenpositionen.txt ../download/zeilen_${DATE}.list | sh
  114.  
  115. echo
  116. echo "Compositing pages and boxes..."
  117. echo
  118.  
  119. # Compositing pages and boxes
  120. for f in out-???.png ; do
  121. composite -compose multiply $f ${f/out/seite} ${f/out/comp}
  122. done
  123.  
  124. # Renaming composite pages
  125. for f in comp-???.png ; do mv -f $f ${f/comp/seite}; done
  126.  
  127. echo
  128. echo "Mounting tile overviews..."
  129. echo
  130.  
  131. # Tiled overview
  132. montage -geometry +1+1 -tile 20x -border 1 seite-???.png thumb_xxl.png
  133.  
  134. # Statuszeile 1
  135. convert -size 770x160 -pointsize 16 -gravity center label:"130+ Quellen mit eigener Farbe. Sonstige Quellen in Rot." status1.png
  136.  
  137. # Thin status line 2
  138. convert -size 770x22 -pointsize 16 -gravity center label:"$DAT2 | $FRAGMENTS Fragmente mit $PLAGZEILEN Zeilen ($PLAGPROZENT%) | http://de.guttenplag.wikia.com/wiki/Benutzer:User8" status2_thin.png
  139.  
  140. # Statuszeile 1 + 2 thin
  141. composite -compose multiply -gravity east -geometry +0+40 status2_thin.png status1.png legende.png
  142.  
  143. # Kacheln + Statuszeilen
  144. composite -gravity southeast legende.png thumb_xxl.png out.png
  145.  
  146. # Kacheln + Statuszeile + vertikale Farblegende
  147. convert -depth 8 -quality 30 out.png ../images/legend_vertical.png +append thumb_${DATE}.png && rm -f out.png
  148.  
  149. echo
  150. echo "Generating a stacked histogramme.."
  151. echo
  152.  
  153. # Generate a stacked histogramme, using gnuplot
  154. awk -f ../scripts/author_stats.awk ../download/zeilen_${DATE}.list | sort -t " " -nr -k11 > author_stats.txt
  155.  
  156. # Gnuplot generates tmp1_stats.png
  157. gnuplot ../scripts/author_stats.gp
  158.  
  159. # Rotate
  160. convert -rotate 90 tmp1_stats.png tmp2_stats.png
  161.  
  162. # Crop left border
  163. convert -crop 950x2000+50+0 -gravity NorthWest tmp2_stats.png tmp3_stats.png
  164.  
  165. # Now we need to add a rotated static legend... :-(
  166. composite -gravity NorthWest -geometry +600+250 ../images/legend_stats.png tmp3_stats.png tmp4_stats.png
  167.  
  168. # Add status line, generate final image
  169. composite -depth 8 status2_thin.png -gravity NorthEast -geometry +0+5 tmp4_stats.png quell_stats_${DATE}.png
  170.  
  171. rm -f tmp?_stats.png
  172.  
  173. echo
  174. echo "$(date +'%d.%m.%Y %H:%M') -- Done!"
  175. echo
  176.  
  177. exit 0
  178.  
  179. ####### END of update.sh bash script #######
  180.  
  181.  
  182.  
  183. ####### AWK scripts: zeilen.awk, colorise.awk and quelle_color.awk #######
  184.  
  185. #
  186. # If you are having trouble with @include (which is a new feature of not yet released Gawk v4)
  187. # then you could remove @include and copy & paste the content of quelle_color.awk there
  188. #
  189.  
  190. ==> zeilen.awk <==
  191.  
  192. @include "quelle_color.awk"
  193.  
  194. BEGIN { FS = OFS = "\t" ; IGNORCASE = 1 }
  195.  
  196. {
  197. cat_num = qll_num = ""
  198.  
  199. for (i = 1; i < numPLAGKAT; i++) {
  200. if (tolower($0) ~ tolower(PLAGKAT[i])) {
  201. cat_num = i
  202. break
  203. }
  204. }
  205.  
  206. if (! cat_num) {
  207. cat_num = numPLAGKAT
  208. print $0 > "cat_not_found.list"
  209. }
  210.  
  211. for (i = 1; i < numQUELLE; i++) {
  212. if (tolower($0) ~ tolower(QUELLE[i] "]")) {
  213. qll_num = i
  214. break
  215. }
  216. }
  217.  
  218. if (! qll_num) {
  219. qll_num = numQUELLE
  220. print $0 > "qll_not_found.list"
  221. }
  222.  
  223. split($3, z, "-")
  224.  
  225. # start line
  226. sl = z[1] + 0
  227.  
  228. # end line
  229. el = z[2] ? z[2] + 0 : sl
  230.  
  231. # Fragment.. (str) | Seite (num) | start_line | end_line | curr_line | cat_num | qll_num
  232. for (i = sl; i <= el; i++)
  233. print $1, $2 + 0, sl, el, i, cat_num, qll_num
  234. }
  235.  
  236. ==> colorise.awk <==
  237.  
  238. #
  239. # Usage:
  240. # awk -f colorise.awk zeilenpositionen.txt zeilen_YYMMDD_HHMM.list
  241. # zeilenpositionen.txt ist eine 1:1 Kopie vom Wiki [[Zeilenpositionen]]
  242. #
  243.  
  244. @include "quelle_color.awk"
  245.  
  246. BEGIN {
  247.  
  248. PROCINFO["sorted_in"] = "ascending"
  249.  
  250. # Scale factor for PDF background = 8
  251. if (large) {
  252. fact = 8
  253. prefix = "page-"
  254. } else {
  255. fact = 1
  256. prefix = "out-"
  257. }
  258.  
  259. width = 104 * fact
  260. height = 158 * fact
  261.  
  262. # Quotes as variables
  263. sq = "\'"
  264. dq = "\""
  265. }
  266.  
  267. # Remember the line positions as given in zeilenpositionen.txt
  268. NR == FNR {
  269.  
  270. f = split($0, fld, ":")
  271.  
  272. if (f == 3) {
  273.  
  274. key = sprintf("%03d", fld[1])
  275.  
  276. n = split(fld[2], line, ",")
  277. num_lines[key] = n
  278.  
  279. for (i in line)
  280. ZP[key,i] = line[i] / 100
  281.  
  282. n = split(fld[3], note, ",")
  283. num_notes[key] = n
  284.  
  285. for (i in note)
  286. NP[key,i] = note[i] / 100
  287. }
  288. next
  289. }
  290.  
  291. # colorise boxes, per fragment
  292. ! a[$1,$2,$3]++ {
  293.  
  294. if (! prevPage) prevPage = $2
  295.  
  296. if (prevPage != $2) {
  297. print "convert -size " width "x" height " xc:none -pointsize 10" plot_cmd, prefix prevPage ".png"
  298. plot_cmd = ""
  299. }
  300.  
  301. # start and end line
  302. sl = $5 ; el = $6
  303.  
  304. # Kategorie, Quelle
  305. pk = $8 ; qu = $9
  306.  
  307. plot_cmd = plot_cmd box()
  308. prevPage = $2
  309. }
  310.  
  311.  
  312. # take care of the last page
  313. END {
  314.  
  315. if ($2 < 408)
  316. print "convert -size " width "x" height " xc:none -pointsize 10" plot_cmd, prefix prevPage ".png"
  317. }
  318.  
  319. function box( ulx, uly, lrx, lry, text_pos, str) {
  320.  
  321. # upper left x coordinate of the box
  322. ulx = 0.08 * width # left-shifted thumbs
  323.  
  324. # upper left y coordinate of the box
  325. uly = height * ( sl < 100 ? ZP[$2, sl] : NP[$2, sl - 100] )
  326.  
  327. # upper left y coordinate, adjusted by half a line (~0.25% of the height)
  328. uly = uly - 0.0025 * height
  329.  
  330. # lower right y coordinate of the box
  331. lrx = 0.86 * width # left-shifted thumbs
  332.  
  333. # lower right y coordinate, adjusted
  334. lry = height * ( el < 100 ? ZP[$2, el] : NP[$2, el - 100] )
  335.  
  336. # Now we have to go to the bottom of the end line (adding ~1.5% of the height)
  337. lry = lry + 0.0125 * height
  338.  
  339. ulx = sprintf("%.0f", ulx )
  340. uly = sprintf("%.0f", uly )
  341. llx = sprintf("%.0f", llx )
  342. lly = sprintf("%.0f", lly )
  343.  
  344. text_pos = sprintf ("%.0f", ( uly + lry ) / 2 - 4 )
  345.  
  346. ### Default values ###
  347. qu = qu == numQUELLE ? "(*)" : qu
  348. color = qu == "(*)" ? "red" : COLOR[qu]
  349. randnotiz = qu
  350.  
  351. ### By author modification ###
  352. if (single_aut) {
  353. color = "red"
  354. randnotiz = KURZKAT[pk]
  355. }
  356.  
  357. ### For PDF background ###
  358. if (large) {
  359. ulx = 0.11 * width
  360. lrx = 0.89 * width
  361. randnotiz = substr($1,10) FS KURZKAT[pk]
  362. }
  363.  
  364. str = FS "-fill " color " -draw " sq "rectangle " ulx "," uly FS lrx "," lry sq " -fill blue -gravity NorthEast -draw " sq "text 1," text_pos FS dq randnotiz dq sq
  365.  
  366. return str
  367. }
  368.  
  369. ==> quelle_color.awk <==
  370.  
  371. BEGIN {
  372. numQUELLE = split("Abromeit.2001 Ackerman.2000 Adams.1992 Annaheim.1992 Bauer.2002 Beer.2000 Blankenburg.1998 Blumenwitz.1998 Blumenwitz.2003 Bocklet.2003 Bouton.2001 Brockhaus.1986 Brugger.1994 Buck.1996 Bundestag.2003 Burgard.2000 Burghardt.2002 Böckenförde.1999 CRS.Annotated.Constitution.1992 Casper.2001 Century.Foundation.1999 Chiang.2003 Currie.1998 Di.Fabio.2001 Dippel.2001 Dix.2001 Duftner.2001 Egerer.1989 Examen.Europaeum.Consortium.o.J. Fraenkel.1960 Freiburghaus.2003 Fuchs.2002 Giering.o.J. Grimm.1994 Grimm.2001 Guérot.2001 Görlitz.2003 Görlitz.2003b Habermas.2001 Haller.1973 Haller.2003 Haltern.1998 Haratsch.2000 Hartleif.2004 Heideking.1998 Heideking.2004 Held.2004 Hellriegel/Thoma.2005 Heun.1999 Hirsch.2001 Hirsch.2002 Hofmeister.1988 Hummer.2003 Häberle.1992 Häberle.2006 Hänsch.2003 Janssen.2005 Jouanjan.2003 Kimmel.1990 Kimmel.1994 Kirchhof.1998 Koeppen.2003 Kreis.2003 Kühnhardt.2003 Kühnhardt.2004 Kühnhardt.2005 LZB.NDS.2004 Landtag-BW.2002 Langen.2003 Loewenstein.1959 Läufer.1994 Marhold.2006 Martenczuk.2000 Marxer.2004 Maurer.2003 Maurer.2005 Mayer.2003 Mayer.2004 Moisi.2001 Murphy.2000 Nettesheim.2002 Nettesheim.2004 Neuss.2000 Obermüller.2003 Opolka.1998 Pechstein.2000 Pentzlin.2003 Pernice.2001 Peters.2003 Pieper.1998 Rakove.2003 Ratzmann.2003 Reinalter.2006 Reinhard.1999 Robbers.2003 Sautter.1976 Scharpf.1995 Schieren.2002 Schmitz.2001 Schnepel.2003 Scholz.2001 Schulze.1999 Schwab.2001 Schäfer.2005 Schütz.2000 Shell.1992 Shell.2005 Sokatscheva.2000 Stein.1997 Steinberger.1987 Steinkamp.1999 Stern.1977 Stern.1997 Stoiber.2001 Stolleis.2002 Stürmer.2001 Tammler.2003 Tammler.2004 Thalmaier.2005 Triebel.2003 Tushnet.1999 U.S..Diplomatic.Mission.to.Germany U.S..Diplomatic.Mission.to.Germany.2004 Vaubel.2003 Vile.1991 Volkmann-Schluck.2001 Waibel.2001 Wasser.1997 Wasser.1997b Weege.2005 Zehnpfennig.1997 Zippelius.1999 Sonstige.Quelle", QUELLE, " ")
  373. numCOLOR = split("darkolivegreen olivedrab yellowgreen olivedrab3 olivedrab2 olivedrab1 darkolivegreen2 darkolivegreen1 darkolivegreen3 greenyellow chartreuse3 chartreuse2 chartreuse1 chartreuse lawngreen darkgreen green forestgreen green3 green2 limegreen lime green1 palegreen3 darkseagreen darkseagreen3 mediumforestgreen seagreen2 seagreen1 seagreen3 seagreen mediumseagreen springgreen3 springgreen2 springgreen1 springgreen mediumspringgreen turquoise mediumturquoise teal darkcyan cyan3 cyan2 cyan1 cyan aqua darkturquoise turquoise3 turquoise2 turquoise1 deepskyblue3 deepskyblue2 deepskyblue1 deepskyblue skyblue skyblue3 skyblue2 skyblue1 steelblue3 steelblue2 steelblue1 steelblue dodgerblue3 dodgerblue2 dodgerblue1 dodgerblue cornflowerblue royalblue3 royalblue2 royalblue1 royalblue mediumblue blue3 blue2 blue1 blue slateblue3 slateblue2 slateblue1 slateblue mediumslateblue mediumpurple3 mediumpurple2 mediumpurple1 mediumpurple purple1 purple3 purple2 blueviolet purple darkorchid2 darkorchid3 darkorchid1 darkorchid darkviolet mediumorchid3 mediumorchid2 mediumorchid1 mediumorchid purple darkmagenta magenta3 magenta2 magenta1 magenta fuchsia violet orchid3 orchid1 orchid orchid2 violetred mediumvioletred maroon3 maroon2 maroon1 deeppink3 deeppink2 deeppink1 deeppink hotpink hotpink1 hotpink2 violetred2 violetred1 violetred3 hotpink3 palevioletred3 palevioletred1 palevioletred2 palevioletred crimson maroon darkred red3 brown firebrick red2 firebrick3 red1 brown3 firebrick2 indianred3 indianred brown2 firebrick1 brown1 indianred2 indianred1", COLOR, " ")
  374. numPLAGKAT = split("Verschleierung KomplettPlagiat ÜbersetzungsPlagiat VerschärftesBauernOpfer BauernOpfer HalbsatzFlickerei ShakeAndPaste StrukturPlagiat Sonstige.Kategorie", PLAGKAT, " ")
  375. numKURZKAT = split("VS KP ÜP vBO BO HF SAP SP SK", KURZKAT, " ")
  376.  
  377. if (debug == 1) {
  378.  
  379. print numCOLOR " Farben, " numQUELLE " Quellen" > "/dev/stderr"
  380.  
  381. for (i = 1; i <= numQUELLE; i++) {
  382.  
  383. str = length(QUELLE[i]) > 20 ? substr(QUELLE[i], 1, 18) ".." : QUELLE[i]
  384.  
  385. printf "%4d|%03d|%s|%s\n", i, i, str, COLOR[i]
  386. }
  387. }
  388.  
  389. if (debug == 2)
  390. for (i = 1; i <= numPLAGKAT; i++)
  391. print i, "=", PLAGKAT[i], "=", KURZKAT[i]
  392.  
  393. if (debug == 3)
  394. for (i = 1; i <= numQUELLE; i++)
  395. print i, "=", QUELLE[i], "=", COLOR[i]
  396.  
  397. }
  398.  
  399.  
  400. ####### author_stats.awk and author_stats.gp are used for Gnuplotting #######
  401.  
  402.  
  403. ==> author_stats.awk <==
  404.  
  405. @include "quelle_color.awk"
  406.  
  407. BEGIN { PROCINFO["sorted_in"] = "ascending" ; OFS = "\t" }
  408.  
  409. # Avoid duplicates
  410. ! a[$2,$7]++ {
  411.  
  412. pk = $8
  413. qu = $9
  414.  
  415. Z[qu][pk]++ # count lines by quelle
  416. T[qu]++ # total number of lines by quelle
  417. H[pk]++ # total number of lines by category
  418. }
  419.  
  420. END {
  421.  
  422. # Print header
  423. printf "%s\t", "Quelle"
  424.  
  425. for (i = 1; i <= numPLAGKAT; i++)
  426. printf "%s\t", PLAGKAT[i]
  427.  
  428. print 99999 # Should be "sum", 9999 needed for numeric sort later
  429.  
  430. # Print data
  431. for (i in T) {
  432. printf "%s\t", ( length(QUELLE[i]) > 40 ? substr(QUELLE[i], 1, 38) ".." : QUELLE[i] )
  433.  
  434. for (j = 1; j <= numPLAGKAT; j++)
  435. printf "%s\t", Z[i][j] + 0
  436. print T[i] + 0
  437. }
  438. }
  439.  
  440. ==> author_stats.gp <==
  441.  
  442. # Plot column-stacked plag stats
  443. #
  444. # Columnstacks
  445. # xtic labels should be picked up from column heads ('title column')
  446. # key titles should be picked up from row heads ('key(1)')
  447. #
  448.  
  449. # set terminal png transparent nocrop enhanced font arial 8 size 500,350
  450. set term png size 2000,1000
  451. set out "tmp1_stats.png"
  452.  
  453. # set title "Quellen und PlagiatsKategorien"
  454.  
  455. set style data histograms
  456. set style histogram rowstacked
  457. set style fill solid 1.0 border lt -1
  458.  
  459. unset key
  460. # set key noinvert
  461. set boxwidth 0.8
  462. set xtic rotate
  463.  
  464. set lmargin 12
  465.  
  466. set ylabel "Zeilenanzahl"
  467. # set xlabel "Quelle" rotate
  468.  
  469. set xtics rotate nomirror scale 0.0
  470. set ytics out rotate nomirror
  471.  
  472. plot 'author_stats.txt' using 2 ti col, \
  473. '' using 3 ti col, \
  474. '' using 4 ti col, \
  475. '' using 5 ti col, \
  476. '' using 6 ti col, \
  477. '' using 7 ti col, \
  478. '' using 8 ti col, \
  479. '' using 9:xtic(1):key(1) ti col
  480.  
  481.  
  482.  
  483. ####### Definitions from quelle_color.awk, for easier reading #######
  484.  
  485. ### PLAGKATs and KURZKATs ###
  486.  
  487. 1 = Verschleierung = VS
  488. 2 = KomplettPlagiat = KP
  489. 3 = ÜbersetzungsPlagiat = ÜP
  490. 4 = VerschärftesBauernOpfer = vBO
  491. 5 = BauernOpfer = BO
  492. 6 = HalbsatzFlickerei = HF
  493. 7 = ShakeAndPaste = SAP
  494. 8 = StrukturPlagiat = SP
  495. 9 = Sonstige.Kategorie = SK
  496.  
  497. ### QUELLEn and COLORs ###
  498.  
  499. 1 = Abromeit.2001 = darkolivegreen
  500. 2 = Ackerman.2000 = olivedrab
  501. 3 = Adams.1992 = yellowgreen
  502. 4 = Annaheim.1992 = olivedrab3
  503. 5 = Bauer.2002 = olivedrab2
  504. 6 = Beer.2000 = olivedrab1
  505. 7 = Blankenburg.1998 = darkolivegreen2
  506. 8 = Blumenwitz.1998 = darkolivegreen1
  507. 9 = Blumenwitz.2003 = darkolivegreen3
  508. 10 = Bocklet.2003 = greenyellow
  509. 11 = Bouton.2001 = chartreuse3
  510. 12 = Brockhaus.1986 = chartreuse2
  511. 13 = Brugger.1994 = chartreuse1
  512. 14 = Buck.1996 = chartreuse
  513. 15 = Bundestag.2003 = lawngreen
  514. 16 = Burgard.2000 = darkgreen
  515. 17 = Burghardt.2002 = green
  516. 18 = Böckenförde.1999 = forestgreen
  517. 19 = CRS.Annotated.Constitution.1992 = green3
  518. 20 = Casper.2001 = green2
  519. 21 = Century.Foundation.1999 = limegreen
  520. 22 = Chiang.2003 = lime
  521. 23 = Currie.1998 = green1
  522. 24 = Di.Fabio.2001 = palegreen3
  523. 25 = Dippel.2001 = darkseagreen
  524. 26 = Dix.2001 = darkseagreen3
  525. 27 = Duftner.2001 = mediumforestgreen
  526. 28 = Egerer.1989 = seagreen2
  527. 29 = Examen.Europaeum.Consortium.o.J. = seagreen1
  528. 30 = Fraenkel.1960 = seagreen3
  529. 31 = Freiburghaus.2003 = seagreen
  530. 32 = Fuchs.2002 = mediumseagreen
  531. 33 = Giering.o.J. = springgreen3
  532. 34 = Grimm.1994 = springgreen2
  533. 35 = Grimm.2001 = springgreen1
  534. 36 = Guérot.2001 = springgreen
  535. 37 = Görlitz.2003 = mediumspringgreen
  536. 38 = Görlitz.2003b = turquoise
  537. 39 = Habermas.2001 = mediumturquoise
  538. 40 = Haller.1973 = teal
  539. 41 = Haller.2003 = darkcyan
  540. 42 = Haltern.1998 = cyan3
  541. 43 = Haratsch.2000 = cyan2
  542. 44 = Hartleif.2004 = cyan1
  543. 45 = Heideking.1998 = cyan
  544. 46 = Heideking.2004 = aqua
  545. 47 = Held.2004 = darkturquoise
  546. 48 = Hellriegel/Thoma.2005 = turquoise3
  547. 49 = Heun.1999 = turquoise2
  548. 50 = Hirsch.2001 = turquoise1
  549. 51 = Hirsch.2002 = deepskyblue3
  550. 52 = Hofmeister.1988 = deepskyblue2
  551. 53 = Hummer.2003 = deepskyblue1
  552. 54 = Häberle.1992 = deepskyblue
  553. 55 = Häberle.2006 = skyblue
  554. 56 = Hänsch.2003 = skyblue3
  555. 57 = Janssen.2005 = skyblue2
  556. 58 = Jouanjan.2003 = skyblue1
  557. 59 = Kimmel.1990 = steelblue3
  558. 60 = Kimmel.1994 = steelblue2
  559. 61 = Kirchhof.1998 = steelblue1
  560. 62 = Koeppen.2003 = steelblue
  561. 63 = Kreis.2003 = dodgerblue3
  562. 64 = Kühnhardt.2003 = dodgerblue2
  563. 65 = Kühnhardt.2004 = dodgerblue1
  564. 66 = Kühnhardt.2005 = dodgerblue
  565. 67 = LZB.NDS.2004 = cornflowerblue
  566. 68 = Landtag-BW.2002 = royalblue3
  567. 69 = Langen.2003 = royalblue2
  568. 70 = Loewenstein.1959 = royalblue1
  569. 71 = Läufer.1994 = royalblue
  570. 72 = Marhold.2006 = mediumblue
  571. 73 = Martenczuk.2000 = blue3
  572. 74 = Marxer.2004 = blue2
  573. 75 = Maurer.2003 = blue1
  574. 76 = Maurer.2005 = blue
  575. 77 = Mayer.2003 = slateblue3
  576. 78 = Mayer.2004 = slateblue2
  577. 79 = Moisi.2001 = slateblue1
  578. 80 = Murphy.2000 = slateblue
  579. 81 = Nettesheim.2002 = mediumslateblue
  580. 82 = Nettesheim.2004 = mediumpurple3
  581. 83 = Neuss.2000 = mediumpurple2
  582. 84 = Obermüller.2003 = mediumpurple1
  583. 85 = Opolka.1998 = mediumpurple
  584. 86 = Pechstein.2000 = purple1
  585. 87 = Pentzlin.2003 = purple3
  586. 88 = Pernice.2001 = purple2
  587. 89 = Peters.2003 = blueviolet
  588. 90 = Pieper.1998 = purple
  589. 91 = Rakove.2003 = darkorchid2
  590. 92 = Ratzmann.2003 = darkorchid3
  591. 93 = Reinalter.2006 = darkorchid1
  592. 94 = Reinhard.1999 = darkorchid
  593. 95 = Robbers.2003 = darkviolet
  594. 96 = Sautter.1976 = mediumorchid3
  595. 97 = Scharpf.1995 = mediumorchid2
  596. 98 = Schieren.2002 = mediumorchid1
  597. 99 = Schmitz.2001 = mediumorchid
  598. 100 = Schnepel.2003 = purple
  599. 101 = Scholz.2001 = darkmagenta
  600. 102 = Schulze.1999 = magenta3
  601. 103 = Schwab.2001 = magenta2
  602. 104 = Schäfer.2005 = magenta1
  603. 105 = Schütz.2000 = magenta
  604. 106 = Shell.1992 = fuchsia
  605. 107 = Shell.2005 = violet
  606. 108 = Sokatscheva.2000 = orchid3
  607. 109 = Stein.1997 = orchid1
  608. 110 = Steinberger.1987 = orchid
  609. 111 = Steinkamp.1999 = orchid2
  610. 112 = Stern.1977 = violetred
  611. 113 = Stern.1997 = mediumvioletred
  612. 114 = Stoiber.2001 = maroon3
  613. 115 = Stolleis.2002 = maroon2
  614. 116 = Stürmer.2001 = maroon1
  615. 117 = Tammler.2003 = deeppink3
  616. 118 = Tammler.2004 = deeppink2
  617. 119 = Thalmaier.2005 = deeppink1
  618. 120 = Triebel.2003 = deeppink
  619. 121 = Tushnet.1999 = hotpink
  620. 122 = U.S..Diplomatic.Mission.to.Germany = hotpink1
  621. 123 = U.S..Diplomatic.Mission.to.Germany.2004 = hotpink2
  622. 124 = Vaubel.2003 = violetred2
  623. 125 = Vile.1991 = violetred1
  624. 126 = Volkmann-Schluck.2001 = violetred3
  625. 127 = Waibel.2001 = hotpink3
  626. 128 = Wasser.1997 = palevioletred3
  627. 129 = Wasser.1997b = palevioletred1
  628. 130 = Weege.2005 = palevioletred2
  629. 131 = Zehnpfennig.1997 = palevioletred
  630. 132 = Zippelius.1999 = crimson
  631.  
  632. Sonstige.Quelle = red
  633.  
  634. ####### END of documentation #######
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement