Advertisement
Guest User

Untitled

a guest
Mar 18th, 2011
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.72 KB | None | 0 0
  1. #! env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. # Eine kritische Edition.
  5. # datum/stand der fragmente
  6. # Hrsg und mit Kommentaren versehen von
  7.  
  8. import sys
  9. import codecs
  10. sys.stdout = codecs.getwriter('utf8')(sys.stdout)
  11. import re
  12.  
  13. PAGES = 476
  14. DINA4_H = 210.0
  15. DINA4_V = 297.0
  16.  
  17. from xml.dom.minidom import parse, parseString
  18.  
  19. COLORMAP = dict(map(lambda col: col.lower().split("="),
  20. "crimson=220,20,60;"
  21. "MediumForestGreen=50,129,75;"
  22. "teal=0,128,128;"
  23. "snow=255,250,250;"
  24. "ghost white=248,248,255;"
  25. "GhostWhite=248,248,255;"
  26. "white smoke=245,245,245;"
  27. "WhiteSmoke=245,245,245;"
  28. "gainsboro=220,220,220;"
  29. "floral white=255,250,240;"
  30. "FloralWhite=255,250,240;"
  31. "old lace=253,245,230;"
  32. "OldLace=253,245,230;"
  33. "linen=250,240,230;"
  34. "antique white=250,235,215;"
  35. "AntiqueWhite=250,235,215;"
  36. "papaya whip=255,239,213;"
  37. "PapayaWhip=255,239,213;"
  38. "blanched almond=255,235,205;"
  39. "BlanchedAlmond=255,235,205;"
  40. "bisque=255,228,196;"
  41. "peach puff=255,218,185;"
  42. "PeachPuff=255,218,185;"
  43. "navajo white=255,222,173;"
  44. "NavajoWhite=255,222,173;"
  45. "moccasin=255,228,181;"
  46. "cornsilk=255,248,220;"
  47. "ivory=255,255,240;"
  48. "lemon chiffon=255,250,205;"
  49. "LemonChiffon=255,250,205;"
  50. "seashell=255,245,238;"
  51. "honeydew=240,255,240;"
  52. "mint cream=245,255,250;"
  53. "MintCream=245,255,250;"
  54. "azure=240,255,255;"
  55. "alice blue=240,248,255;"
  56. "AliceBlue=240,248,255;"
  57. "lavender=230,230,250;"
  58. "lavender blush=255,240,245;"
  59. "LavenderBlush=255,240,245;"
  60. "misty rose=255,228,225;"
  61. "MistyRose=255,228,225;"
  62. "white=255,255,255;"
  63. "black=0,0,0;"
  64. "dark slate gray=47,79,79;"
  65. "DarkSlateGray=47,79,79;"
  66. "dark slate grey=47,79,79;"
  67. "DarkSlateGrey=47,79,79;"
  68. "dim gray=105,105,105;"
  69. "DimGray=105,105,105;"
  70. "dim grey=105,105,105;"
  71. "DimGrey=105,105,105;"
  72. "slate gray=112,128,144;"
  73. "SlateGray=112,128,144;"
  74. "slate grey=112,128,144;"
  75. "SlateGrey=112,128,144;"
  76. "light slate gray=119,136,153;"
  77. "LightSlateGray=119,136,153;"
  78. "light slate grey=119,136,153;"
  79. "LightSlateGrey=119,136,153;"
  80. "gray=190,190,190;"
  81. "grey=190,190,190;"
  82. "light grey=211,211,211;"
  83. "LightGrey=211,211,211;"
  84. "light gray=211,211,211;"
  85. "LightGray=211,211,211;"
  86. "midnight blue=25,25,112;"
  87. "MidnightBlue=25,25,112;"
  88. "navy=0,0,128;"
  89. "navy blue=0,0,128;"
  90. "NavyBlue=0,0,128;"
  91. "cornflower blue=100,149,237;"
  92. "CornflowerBlue=100,149,237;"
  93. "dark slate blue=72,61,139;"
  94. "DarkSlateBlue=72,61,139;"
  95. "slate blue=106,90,205;"
  96. "SlateBlue=106,90,205;"
  97. "medium slate blue=123,104,238;"
  98. "MediumSlateBlue=123,104,238;"
  99. "light slate blue=132,112,255;"
  100. "LightSlateBlue=132,112,255;"
  101. "medium blue=0,0,205;"
  102. "MediumBlue=0,0,205;"
  103. "royal blue=65,105,225;"
  104. "RoyalBlue=65,105,225;"
  105. "blue=0,0,255;"
  106. "dodger blue=30,144,255;"
  107. "DodgerBlue=30,144,255;"
  108. "deep sky blue=0,191,255;"
  109. "DeepSkyBlue=0,191,255;"
  110. "sky blue=135,206,235;"
  111. "SkyBlue=135,206,235;"
  112. "light sky blue=135,206,250;"
  113. "LightSkyBlue=135,206,250;"
  114. "steel blue=70,130,180;"
  115. "SteelBlue=70,130,180;"
  116. "light steel blue=176,196,222;"
  117. "LightSteelBlue=176,196,222;"
  118. "light blue=173,216,230;"
  119. "LightBlue=173,216,230;"
  120. "powder blue=176,224,230;"
  121. "PowderBlue=176,224,230;"
  122. "pale turquoise=175,238,238;"
  123. "PaleTurquoise=175,238,238;"
  124. "dark turquoise=0,206,209;"
  125. "DarkTurquoise=0,206,209;"
  126. "medium turquoise=72,209,204;"
  127. "MediumTurquoise=72,209,204;"
  128. "turquoise=64,224,208;"
  129. "cyan=0,255,255;"
  130. "light cyan=224,255,255;"
  131. "LightCyan=224,255,255;"
  132. "cadet blue=95,158,160;"
  133. "CadetBlue=95,158,160;"
  134. "medium aquamarine=102,205,170;"
  135. "MediumAquamarine=102,205,170;"
  136. "aquamarine=127,255,212;"
  137. "dark green=0,100,0;"
  138. "DarkGreen=0,100,0;"
  139. "dark olive green=85,107,47;"
  140. "DarkOliveGreen=85,107,47;"
  141. "dark sea green=143,188,143;"
  142. "DarkSeaGreen=143,188,143;"
  143. "sea green=46,139,87;"
  144. "SeaGreen=46,139,87;"
  145. "medium sea green=60,179,113;"
  146. "MediumSeaGreen=60,179,113;"
  147. "light sea green=32,178,170;"
  148. "LightSeaGreen=32,178,170;"
  149. "pale green=152,251,152;"
  150. "PaleGreen=152,251,152;"
  151. "spring green=0,255,127;"
  152. "SpringGreen=0,255,127;"
  153. "lawn green=124,252,0;"
  154. "LawnGreen=124,252,0;"
  155. "green=0,255,0;"
  156. "chartreuse=127,255,0;"
  157. "medium spring green=0,250,154;"
  158. "MediumSpringGreen=0,250,154;"
  159. "green yellow=173,255,47;"
  160. "GreenYellow=173,255,47;"
  161. "lime green=50,205,50;"
  162. "LimeGreen=50,205,50;"
  163. "yellow green=154,205,50;"
  164. "YellowGreen=154,205,50;"
  165. "forest green=34,139,34;"
  166. "ForestGreen=34,139,34;"
  167. "olive drab=107,142,35;"
  168. "OliveDrab=107,142,35;"
  169. "dark khaki=189,183,107;"
  170. "DarkKhaki=189,183,107;"
  171. "khaki=240,230,140;"
  172. "pale goldenrod=238,232,170;"
  173. "PaleGoldenrod=238,232,170;"
  174. "light goldenrod yellow=250,250,210;"
  175. "LightGoldenrodYellow=250,250,210;"
  176. "light yellow=255,255,224;"
  177. "LightYellow=255,255,224;"
  178. "yellow=255,255,0;"
  179. "gold=255,215,0;"
  180. "light goldenrod=238,221,130;"
  181. "LightGoldenrod=238,221,130;"
  182. "goldenrod=218,165,32;"
  183. "dark goldenrod=184,134,11;"
  184. "DarkGoldenrod=184,134,11;"
  185. "rosy brown=188,143,143;"
  186. "RosyBrown=188,143,143;"
  187. "indian red=205,92,92;"
  188. "IndianRed=205,92,92;"
  189. "saddle brown=139,69,19;"
  190. "SaddleBrown=139,69,19;"
  191. "sienna=160,82,45;"
  192. "peru=205,133,63;"
  193. "burlywood=222,184,135;"
  194. "beige=245,245,220;"
  195. "wheat=245,222,179;"
  196. "sandy brown=244,164,96;"
  197. "SandyBrown=244,164,96;"
  198. "tan=210,180,140;"
  199. "chocolate=210,105,30;"
  200. "firebrick=178,34,34;"
  201. "brown=165,42,42;"
  202. "dark salmon=233,150,122;"
  203. "DarkSalmon=233,150,122;"
  204. "salmon=250,128,114;"
  205. "light salmon=255,160,122;"
  206. "LightSalmon=255,160,122;"
  207. "orange=255,165,0;"
  208. "dark orange=255,140,0;"
  209. "DarkOrange=255,140,0;"
  210. "coral=255,127,80;"
  211. "light coral=240,128,128;"
  212. "LightCoral=240,128,128;"
  213. "tomato=255,99,71;"
  214. "orange red=255,69,0;"
  215. "OrangeRed=255,69,0;"
  216. "red=255,0,0;"
  217. "hot pink=255,105,180;"
  218. "HotPink=255,105,180;"
  219. "deep pink=255,20,147;"
  220. "DeepPink=255,20,147;"
  221. "pink=255,192,203;"
  222. "light pink=255,182,193;"
  223. "LightPink=255,182,193;"
  224. "pale violet red=219,112,147;"
  225. "PaleVioletRed=219,112,147;"
  226. "maroon=176,48,96;"
  227. "medium violet red=199,21,133;"
  228. "MediumVioletRed=199,21,133;"
  229. "violet red=208,32,144;"
  230. "VioletRed=208,32,144;"
  231. "magenta=255,0,255;"
  232. "violet=238,130,238;"
  233. "plum=221,160,221;"
  234. "orchid=218,112,214;"
  235. "medium orchid=186,85,211;"
  236. "MediumOrchid=186,85,211;"
  237. "dark orchid=153,50,204;"
  238. "DarkOrchid=153,50,204;"
  239. "dark violet=148,0,211;"
  240. "DarkViolet=148,0,211;"
  241. "blue violet=138,43,226;"
  242. "BlueViolet=138,43,226;"
  243. "purple=160,32,240;"
  244. "medium purple=147,112,219;"
  245. "MediumPurple=147,112,219;"
  246. "thistle=216,191,216;"
  247. "snow1=255,250,250;"
  248. "snow2=238,233,233;"
  249. "snow3=205,201,201;"
  250. "snow4=139,137,137;"
  251. "seashell1=255,245,238;"
  252. "seashell2=238,229,222;"
  253. "seashell3=205,197,191;"
  254. "seashell4=139,134,130;"
  255. "AntiqueWhite1=255,239,219;"
  256. "AntiqueWhite2=238,223,204;"
  257. "AntiqueWhite3=205,192,176;"
  258. "AntiqueWhite4=139,131,120;"
  259. "bisque1=255,228,196;"
  260. "bisque2=238,213,183;"
  261. "bisque3=205,183,158;"
  262. "bisque4=139,125,107;"
  263. "PeachPuff1=255,218,185;"
  264. "PeachPuff2=238,203,173;"
  265. "PeachPuff3=205,175,149;"
  266. "PeachPuff4=139,119,101;"
  267. "NavajoWhite1=255,222,173;"
  268. "NavajoWhite2=238,207,161;"
  269. "NavajoWhite3=205,179,139;"
  270. "NavajoWhite4=139,121,94;"
  271. "LemonChiffon1=255,250,205;"
  272. "LemonChiffon2=238,233,191;"
  273. "LemonChiffon3=205,201,165;"
  274. "LemonChiffon4=139,137,112;"
  275. "cornsilk1=255,248,220;"
  276. "cornsilk2=238,232,205;"
  277. "cornsilk3=205,200,177;"
  278. "cornsilk4=139,136,120;"
  279. "ivory1=255,255,240;"
  280. "ivory2=238,238,224;"
  281. "ivory3=205,205,193;"
  282. "ivory4=139,139,131;"
  283. "honeydew1=240,255,240;"
  284. "honeydew2=224,238,224;"
  285. "honeydew3=193,205,193;"
  286. "honeydew4=131,139,131;"
  287. "LavenderBlush1=255,240,245;"
  288. "LavenderBlush2=238,224,229;"
  289. "LavenderBlush3=205,193,197;"
  290. "LavenderBlush4=139,131,134;"
  291. "MistyRose1=255,228,225;"
  292. "MistyRose2=238,213,210;"
  293. "MistyRose3=205,183,181;"
  294. "MistyRose4=139,125,123;"
  295. "azure1=240,255,255;"
  296. "azure2=224,238,238;"
  297. "azure3=193,205,205;"
  298. "azure4=131,139,139;"
  299. "SlateBlue1=131,111,255;"
  300. "SlateBlue2=122,103,238;"
  301. "SlateBlue3=105,89,205;"
  302. "SlateBlue4=71,60,139;"
  303. "RoyalBlue1=72,118,255;"
  304. "RoyalBlue2=67,110,238;"
  305. "RoyalBlue3=58,95,205;"
  306. "RoyalBlue4=39,64,139;"
  307. "blue1=0,0,255;"
  308. "blue2=0,0,238;"
  309. "blue3=0,0,205;"
  310. "blue4=0,0,139;"
  311. "DodgerBlue1=30,144,255;"
  312. "DodgerBlue2=28,134,238;"
  313. "DodgerBlue3=24,116,205;"
  314. "DodgerBlue4=16,78,139;"
  315. "SteelBlue1=99,184,255;"
  316. "SteelBlue2=92,172,238;"
  317. "SteelBlue3=79,148,205;"
  318. "SteelBlue4=54,100,139;"
  319. "DeepSkyBlue1=0,191,255;"
  320. "DeepSkyBlue2=0,178,238;"
  321. "DeepSkyBlue3=0,154,205;"
  322. "DeepSkyBlue4=0,104,139;"
  323. "SkyBlue1=135,206,255;"
  324. "SkyBlue2=126,192,238;"
  325. "SkyBlue3=108,166,205;"
  326. "SkyBlue4=74,112,139;"
  327. "LightSkyBlue1=176,226,255;"
  328. "LightSkyBlue2=164,211,238;"
  329. "LightSkyBlue3=141,182,205;"
  330. "LightSkyBlue4=96,123,139;"
  331. "SlateGray1=198,226,255;"
  332. "SlateGray2=185,211,238;"
  333. "SlateGray3=159,182,205;"
  334. "SlateGray4=108,123,139;"
  335. "LightSteelBlue1=202,225,255;"
  336. "LightSteelBlue2=188,210,238;"
  337. "LightSteelBlue3=162,181,205;"
  338. "LightSteelBlue4=110,123,139;"
  339. "LightBlue1=191,239,255;"
  340. "LightBlue2=178,223,238;"
  341. "LightBlue3=154,192,205;"
  342. "LightBlue4=104,131,139;"
  343. "LightCyan1=224,255,255;"
  344. "LightCyan2=209,238,238;"
  345. "LightCyan3=180,205,205;"
  346. "LightCyan4=122,139,139;"
  347. "PaleTurquoise1=187,255,255;"
  348. "PaleTurquoise2=174,238,238;"
  349. "PaleTurquoise3=150,205,205;"
  350. "PaleTurquoise4=102,139,139;"
  351. "CadetBlue1=152,245,255;"
  352. "CadetBlue2=142,229,238;"
  353. "CadetBlue3=122,197,205;"
  354. "CadetBlue4=83,134,139;"
  355. "turquoise1=0,245,255;"
  356. "turquoise2=0,229,238;"
  357. "turquoise3=0,197,205;"
  358. "turquoise4=0,134,139;"
  359. "cyan1=0,255,255;"
  360. "cyan2=0,238,238;"
  361. "cyan3=0,205,205;"
  362. "cyan4=0,139,139;"
  363. "DarkSlateGray1=151,255,255;"
  364. "DarkSlateGray2=141,238,238;"
  365. "DarkSlateGray3=121,205,205;"
  366. "DarkSlateGray4=82,139,139;"
  367. "aquamarine1=127,255,212;"
  368. "aquamarine2=118,238,198;"
  369. "aquamarine3=102,205,170;"
  370. "aquamarine4=69,139,116;"
  371. "DarkSeaGreen1=193,255,193;"
  372. "DarkSeaGreen2=180,238,180;"
  373. "DarkSeaGreen3=155,205,155;"
  374. "DarkSeaGreen4=105,139,105;"
  375. "SeaGreen1=84,255,159;"
  376. "SeaGreen2=78,238,148;"
  377. "SeaGreen3=67,205,128;"
  378. "SeaGreen4=46,139,87;"
  379. "PaleGreen1=154,255,154;"
  380. "PaleGreen2=144,238,144;"
  381. "PaleGreen3=124,205,124;"
  382. "PaleGreen4=84,139,84;"
  383. "SpringGreen1=0,255,127;"
  384. "SpringGreen2=0,238,118;"
  385. "SpringGreen3=0,205,102;"
  386. "SpringGreen4=0,139,69;"
  387. "green1=0,255,0;"
  388. "green2=0,238,0;"
  389. "green3=0,205,0;"
  390. "green4=0,139,0;"
  391. "chartreuse1=127,255,0;"
  392. "chartreuse2=118,238,0;"
  393. "chartreuse3=102,205,0;"
  394. "chartreuse4=69,139,0;"
  395. "OliveDrab1=192,255,62;"
  396. "OliveDrab2=179,238,58;"
  397. "OliveDrab3=154,205,50;"
  398. "OliveDrab4=105,139,34;"
  399. "DarkOliveGreen1=202,255,112;"
  400. "DarkOliveGreen2=188,238,104;"
  401. "DarkOliveGreen3=162,205,90;"
  402. "DarkOliveGreen4=110,139,61;"
  403. "khaki1=255,246,143;"
  404. "khaki2=238,230,133;"
  405. "khaki3=205,198,115;"
  406. "khaki4=139,134,78;"
  407. "LightGoldenrod1=255,236,139;"
  408. "LightGoldenrod2=238,220,130;"
  409. "LightGoldenrod3=205,190,112;"
  410. "LightGoldenrod4=139,129,76;"
  411. "LightYellow1=255,255,224;"
  412. "LightYellow2=238,238,209;"
  413. "LightYellow3=205,205,180;"
  414. "LightYellow4=139,139,122;"
  415. "yellow1=255,255,0;"
  416. "yellow2=238,238,0;"
  417. "yellow3=205,205,0;"
  418. "yellow4=139,139,0;"
  419. "gold1=255,215,0;"
  420. "gold2=238,201,0;"
  421. "gold3=205,173,0;"
  422. "gold4=139,117,0;"
  423. "goldenrod1=255,193,37;"
  424. "goldenrod2=238,180,34;"
  425. "goldenrod3=205,155,29;"
  426. "goldenrod4=139,105,20;"
  427. "DarkGoldenrod1=255,185,15;"
  428. "DarkGoldenrod2=238,173,14;"
  429. "DarkGoldenrod3=205,149,12;"
  430. "DarkGoldenrod4=139,101,8;"
  431. "RosyBrown1=255,193,193;"
  432. "RosyBrown2=238,180,180;"
  433. "RosyBrown3=205,155,155;"
  434. "RosyBrown4=139,105,105;"
  435. "IndianRed1=255,106,106;"
  436. "IndianRed2=238,99,99;"
  437. "IndianRed3=205,85,85;"
  438. "IndianRed4=139,58,58;"
  439. "sienna1=255,130,71;"
  440. "sienna2=238,121,66;"
  441. "sienna3=205,104,57;"
  442. "sienna4=139,71,38;"
  443. "burlywood1=255,211,155;"
  444. "burlywood2=238,197,145;"
  445. "burlywood3=205,170,125;"
  446. "burlywood4=139,115,85;"
  447. "wheat1=255,231,186;"
  448. "wheat2=238,216,174;"
  449. "wheat3=205,186,150;"
  450. "wheat4=139,126,102;"
  451. "tan1=255,165,79;"
  452. "tan2=238,154,73;"
  453. "tan3=205,133,63;"
  454. "tan4=139,90,43;"
  455. "chocolate1=255,127,36;"
  456. "chocolate2=238,118,33;"
  457. "chocolate3=205,102,29;"
  458. "chocolate4=139,69,19;"
  459. "firebrick1=255,48,48;"
  460. "firebrick2=238,44,44;"
  461. "firebrick3=205,38,38;"
  462. "firebrick4=139,26,26;"
  463. "brown1=255,64,64;"
  464. "brown2=238,59,59;"
  465. "brown3=205,51,51;"
  466. "brown4=139,35,35;"
  467. "salmon1=255,140,105;"
  468. "salmon2=238,130,98;"
  469. "salmon3=205,112,84;"
  470. "salmon4=139,76,57;"
  471. "LightSalmon1=255,160,122;"
  472. "LightSalmon2=238,149,114;"
  473. "LightSalmon3=205,129,98;"
  474. "LightSalmon4=139,87,66;"
  475. "orange1=255,165,0;"
  476. "orange2=238,154,0;"
  477. "orange3=205,133,0;"
  478. "orange4=139,90,0;"
  479. "DarkOrange1=255,127,0;"
  480. "DarkOrange2=238,118,0;"
  481. "DarkOrange3=205,102,0;"
  482. "DarkOrange4=139,69,0;"
  483. "coral1=255,114,86;"
  484. "coral2=238,106,80;"
  485. "coral3=205,91,69;"
  486. "coral4=139,62,47;"
  487. "tomato1=255,99,71;"
  488. "tomato2=238,92,66;"
  489. "tomato3=205,79,57;"
  490. "tomato4=139,54,38;"
  491. "OrangeRed1=255,69,0;"
  492. "OrangeRed2=238,64,0;"
  493. "OrangeRed3=205,55,0;"
  494. "OrangeRed4=139,37,0;"
  495. "red1=255,0,0;"
  496. "red2=238,0,0;"
  497. "red3=205,0,0;"
  498. "red4=139,0,0;"
  499. "DebianRed=215,7,81;"
  500. "DeepPink1=255,20,147;"
  501. "DeepPink2=238,18,137;"
  502. "DeepPink3=205,16,118;"
  503. "DeepPink4=139,10,80;"
  504. "HotPink1=255,110,180;"
  505. "HotPink2=238,106,167;"
  506. "HotPink3=205,96,144;"
  507. "HotPink4=139,58,98;"
  508. "pink1=255,181,197;"
  509. "pink2=238,169,184;"
  510. "pink3=205,145,158;"
  511. "pink4=139,99,108;"
  512. "LightPink1=255,174,185;"
  513. "LightPink2=238,162,173;"
  514. "LightPink3=205,140,149;"
  515. "LightPink4=139,95,101;"
  516. "PaleVioletRed1=255,130,171;"
  517. "PaleVioletRed2=238,121,159;"
  518. "PaleVioletRed3=205,104,137;"
  519. "PaleVioletRed4=139,71,93;"
  520. "maroon1=255,52,179;"
  521. "maroon2=238,48,167;"
  522. "maroon3=205,41,144;"
  523. "maroon4=139,28,98;"
  524. "VioletRed1=255,62,150;"
  525. "VioletRed2=238,58,140;"
  526. "VioletRed3=205,50,120;"
  527. "VioletRed4=139,34,82;"
  528. "magenta1=255,0,255;"
  529. "magenta2=238,0,238;"
  530. "magenta3=205,0,205;"
  531. "magenta4=139,0,139;"
  532. "orchid1=255,131,250;"
  533. "orchid2=238,122,233;"
  534. "orchid3=205,105,201;"
  535. "orchid4=139,71,137;"
  536. "plum1=255,187,255;"
  537. "plum2=238,174,238;"
  538. "plum3=205,150,205;"
  539. "plum4=139,102,139;"
  540. "MediumOrchid1=224,102,255;"
  541. "MediumOrchid2=209,95,238;"
  542. "MediumOrchid3=180,82,205;"
  543. "MediumOrchid4=122,55,139;"
  544. "DarkOrchid1=191,62,255;"
  545. "DarkOrchid2=178,58,238;"
  546. "DarkOrchid3=154,50,205;"
  547. "DarkOrchid4=104,34,139;"
  548. "purple1=155,48,255;"
  549. "purple2=145,44,238;"
  550. "purple3=125,38,205;"
  551. "purple4=85,26,139;"
  552. "MediumPurple1=171,130,255;"
  553. "MediumPurple2=159,121,238;"
  554. "MediumPurple3=137,104,205;"
  555. "MediumPurple4=93,71,139;"
  556. "thistle1=255,225,255;"
  557. "thistle2=238,210,238;"
  558. "thistle3=205,181,205;"
  559. "thistle4=139,123,139;"
  560. "gray0=0,0,0;"
  561. "grey0=0,0,0;"
  562. "gray1=3,3,3;"
  563. "grey1=3,3,3;"
  564. "gray2=5,5,5;"
  565. "grey2=5,5,5;"
  566. "gray3=8,8,8;"
  567. "grey3=8,8,8;"
  568. "gray4=10,10,10;"
  569. "grey4=10,10,10;"
  570. "gray5=13,13,13;"
  571. "grey5=13,13,13;"
  572. "gray6=15,15,15;"
  573. "grey6=15,15,15;"
  574. "gray7=18,18,18;"
  575. "grey7=18,18,18;"
  576. "gray8=20,20,20;"
  577. "grey8=20,20,20;"
  578. "gray9=23,23,23;"
  579. "grey9=23,23,23;"
  580. "gray10=26,26,26;"
  581. "grey10=26,26,26;"
  582. "gray11=28,28,28;"
  583. "grey11=28,28,28;"
  584. "gray12=31,31,31;"
  585. "grey12=31,31,31;"
  586. "gray13=33,33,33;"
  587. "grey13=33,33,33;"
  588. "gray14=36,36,36;"
  589. "grey14=36,36,36;"
  590. "gray15=38,38,38;"
  591. "grey15=38,38,38;"
  592. "gray16=41,41,41;"
  593. "grey16=41,41,41;"
  594. "gray17=43,43,43;"
  595. "grey17=43,43,43;"
  596. "gray18=46,46,46;"
  597. "grey18=46,46,46;"
  598. "gray19=48,48,48;"
  599. "grey19=48,48,48;"
  600. "gray20=51,51,51;"
  601. "grey20=51,51,51;"
  602. "gray21=54,54,54;"
  603. "grey21=54,54,54;"
  604. "gray22=56,56,56;"
  605. "grey22=56,56,56;"
  606. "gray23=59,59,59;"
  607. "grey23=59,59,59;"
  608. "gray24=61,61,61;"
  609. "grey24=61,61,61;"
  610. "gray25=64,64,64;"
  611. "grey25=64,64,64;"
  612. "gray26=66,66,66;"
  613. "grey26=66,66,66;"
  614. "gray27=69,69,69;"
  615. "grey27=69,69,69;"
  616. "gray28=71,71,71;"
  617. "grey28=71,71,71;"
  618. "gray29=74,74,74;"
  619. "grey29=74,74,74;"
  620. "gray30=77,77,77;"
  621. "grey30=77,77,77;"
  622. "gray31=79,79,79;"
  623. "grey31=79,79,79;"
  624. "gray32=82,82,82;"
  625. "grey32=82,82,82;"
  626. "gray33=84,84,84;"
  627. "grey33=84,84,84;"
  628. "gray34=87,87,87;"
  629. "grey34=87,87,87;"
  630. "gray35=89,89,89;"
  631. "grey35=89,89,89;"
  632. "gray36=92,92,92;"
  633. "grey36=92,92,92;"
  634. "gray37=94,94,94;"
  635. "grey37=94,94,94;"
  636. "gray38=97,97,97;"
  637. "grey38=97,97,97;"
  638. "gray39=99,99,99;"
  639. "grey39=99,99,99;"
  640. "gray40=102,102,102;"
  641. "grey40=102,102,102;"
  642. "gray41=105,105,105;"
  643. "grey41=105,105,105;"
  644. "gray42=107,107,107;"
  645. "grey42=107,107,107;"
  646. "gray43=110,110,110;"
  647. "grey43=110,110,110;"
  648. "gray44=112,112,112;"
  649. "grey44=112,112,112;"
  650. "gray45=115,115,115;"
  651. "grey45=115,115,115;"
  652. "gray46=117,117,117;"
  653. "grey46=117,117,117;"
  654. "gray47=120,120,120;"
  655. "grey47=120,120,120;"
  656. "gray48=122,122,122;"
  657. "grey48=122,122,122;"
  658. "gray49=125,125,125;"
  659. "grey49=125,125,125;"
  660. "gray50=127,127,127;"
  661. "grey50=127,127,127;"
  662. "gray51=130,130,130;"
  663. "grey51=130,130,130;"
  664. "gray52=133,133,133;"
  665. "grey52=133,133,133;"
  666. "gray53=135,135,135;"
  667. "grey53=135,135,135;"
  668. "gray54=138,138,138;"
  669. "grey54=138,138,138;"
  670. "gray55=140,140,140;"
  671. "grey55=140,140,140;"
  672. "gray56=143,143,143;"
  673. "grey56=143,143,143;"
  674. "gray57=145,145,145;"
  675. "grey57=145,145,145;"
  676. "gray58=148,148,148;"
  677. "grey58=148,148,148;"
  678. "gray59=150,150,150;"
  679. "grey59=150,150,150;"
  680. "gray60=153,153,153;"
  681. "grey60=153,153,153;"
  682. "gray61=156,156,156;"
  683. "grey61=156,156,156;"
  684. "gray62=158,158,158;"
  685. "grey62=158,158,158;"
  686. "gray63=161,161,161;"
  687. "grey63=161,161,161;"
  688. "gray64=163,163,163;"
  689. "grey64=163,163,163;"
  690. "gray65=166,166,166;"
  691. "grey65=166,166,166;"
  692. "gray66=168,168,168;"
  693. "grey66=168,168,168;"
  694. "gray67=171,171,171;"
  695. "grey67=171,171,171;"
  696. "gray68=173,173,173;"
  697. "grey68=173,173,173;"
  698. "gray69=176,176,176;"
  699. "grey69=176,176,176;"
  700. "gray70=179,179,179;"
  701. "grey70=179,179,179;"
  702. "gray71=181,181,181;"
  703. "grey71=181,181,181;"
  704. "gray72=184,184,184;"
  705. "grey72=184,184,184;"
  706. "gray73=186,186,186;"
  707. "grey73=186,186,186;"
  708. "gray74=189,189,189;"
  709. "grey74=189,189,189;"
  710. "gray75=191,191,191;"
  711. "grey75=191,191,191;"
  712. "gray76=194,194,194;"
  713. "grey76=194,194,194;"
  714. "gray77=196,196,196;"
  715. "grey77=196,196,196;"
  716. "gray78=199,199,199;"
  717. "grey78=199,199,199;"
  718. "gray79=201,201,201;"
  719. "grey79=201,201,201;"
  720. "gray80=204,204,204;"
  721. "grey80=204,204,204;"
  722. "gray81=207,207,207;"
  723. "grey81=207,207,207;"
  724. "gray82=209,209,209;"
  725. "grey82=209,209,209;"
  726. "gray83=212,212,212;"
  727. "grey83=212,212,212;"
  728. "gray84=214,214,214;"
  729. "grey84=214,214,214;"
  730. "gray85=217,217,217;"
  731. "grey85=217,217,217;"
  732. "gray86=219,219,219;"
  733. "grey86=219,219,219;"
  734. "gray87=222,222,222;"
  735. "grey87=222,222,222;"
  736. "gray88=224,224,224;"
  737. "grey88=224,224,224;"
  738. "gray89=227,227,227;"
  739. "grey89=227,227,227;"
  740. "gray90=229,229,229;"
  741. "grey90=229,229,229;"
  742. "gray91=232,232,232;"
  743. "grey91=232,232,232;"
  744. "gray92=235,235,235;"
  745. "grey92=235,235,235;"
  746. "gray93=237,237,237;"
  747. "grey93=237,237,237;"
  748. "gray94=240,240,240;"
  749. "grey94=240,240,240;"
  750. "gray95=242,242,242;"
  751. "grey95=242,242,242;"
  752. "gray96=245,245,245;"
  753. "grey96=245,245,245;"
  754. "gray97=247,247,247;"
  755. "grey97=247,247,247;"
  756. "gray98=250,250,250;"
  757. "grey98=250,250,250;"
  758. "gray99=252,252,252;"
  759. "grey99=252,252,252;"
  760. "gray100=255,255,255;"
  761. "grey100=255,255,255;"
  762. "dark grey=169,169,169;"
  763. "DarkGrey=169,169,169;"
  764. "dark gray=169,169,169;"
  765. "DarkGray=169,169,169;"
  766. "dark blue=0,0,139;"
  767. "DarkBlue=0,0,139;"
  768. "dark cyan=0,139,139;"
  769. "DarkCyan=0,139,139;"
  770. "dark magenta=139,0,139;"
  771. "DarkMagenta=139,0,139;"
  772. "dark red=139,0,0;"
  773. "DarkRed=139,0,0;"
  774. "light green=144,238,144;"
  775. "LightGreen=144,238,144".split(";")))
  776.  
  777.  
  778. COLOR = dict(zip("Abromeit 2001|Ackerman 2000|Adams 1992|Annaheim 1992"
  779. "|Bauer 2002|Beer 2000|Blumenwitz 2003|Bocklet 2003"
  780. "|Bouton 2001|Breit 2001|Brockhaus 1986|Brugger 1994"
  781. "|Buck 1996|Bundestag 2003|Bundestag 2006|Burgard 2000"
  782. "|Burghardt 2002|Böckenförde 1999"
  783. "|CRS Annotated Constitution 1992|Casper 2001"
  784. "|Century Foundation 1999|Chiang 2003|Currie 1998"
  785. "|Di Fabio 2001|Dippel 2001|Dix 2001|Duftner 2001"
  786. "|Egerer 1989|Examen Europaeum Consortium o.J."
  787. "|Fraenkel 1960|Freiburghaus 2003|Gebhardt 1987"
  788. "|Giering o.J.|Grimm 1994|Grimm 2001|Guérot 2001"
  789. "|Görlitz 2003|Görlitz 2003b|Habermas 2001|Haller 1973"
  790. "|Haller 2003|Haratsch 2000|Hartleif 2004|Heideking 1998"
  791. "|Heideking 2004|Held 2004|Hellriegel/Thoma 2005|Heun 1999"
  792. "|Hirsch 2001|Hirsch 2002|Hofmeister 1988|Hummer 2003"
  793. "|Häberle 1992|Häberle 2006|Hänsch 2003|Janssen 2005"
  794. "|Jouanjan 2003|Kimmel 1990|Kimmel 1994|Kirchhof 1998"
  795. "|Koeppen 2003|Kreis 2003|Kühnhardt 2003|Kühnhardt 2004"
  796. "|Kühnhardt 2005|LZB NDS 2004|Landtag-BW 2002|Langen 2003"
  797. "|Läufer 1994|Marcher 2002|Marhold 2006|Martenczuk 2000"
  798. "|Marxer 2004|Maurer 2003|Maurer 2005|Mayer 2003"
  799. "|Mayer 2004|Moisi 2001|Murphy 2000|Mäder 1999|NZZ 2003"
  800. "|Nettesheim 2002|Nettesheim 2004|Neuss 2000"
  801. "|Obermüller 2003|Opolka 1998|Pechstein 2000"
  802. "|Pentzlin 2003|Pernice 2001|Peters 2003|Peters 2004"
  803. "|Petrosjan 1965|Pieper 1998|Rakove 2003|Ratzmann 2003"
  804. "|Reinalter 2006|Reinhard 1999|Robbers 2003|Sautter 1976"
  805. "|Schäfer 2003|Scharpf 1995|Schieren 2002|Schmitz 2001"
  806. "|Schnepel 2003|Scholz 2001|Schulze 1999|Schwab 2001"
  807. "|Schäfer 2005|Schütz 2000|Shell 1992|Shell 2005"
  808. "|Sokatscheva 2000|Stein 1997|Steinberger 1987"
  809. "|Steinkamp 1999|Stern 1977|Stern 1980|Stern 1996"
  810. "|Stern 1997|Stoiber 2001|Stolleis 2002|Stürmer 2001"
  811. "|Supreme Court Center|Tammler 2003|Tammler 2004"
  812. "|Thalmaier 2005|Triebel 2003|Tushnet 1999"
  813. "|U.S. Diplomatic Mission to Germany"
  814. "|U.S. Diplomatic Mission to Germany 2004"
  815. "|Vaubel 2003|Vile 1991|Volkmann-Schluck 2001"
  816. "|Waibel 2001|Wasser 1997|Wasser 1997b|Weege 2005"
  817. "|Zehnpfennig 1997|Zippelius 1999".split("|"),
  818. u"yellowgreen olivedrab3 olivedrab2 olivedrab1"
  819. " olivedrab darkolivegreen darkolivegreen2"
  820. " darkolivegreen1 darkolivegreen3 greenyellow"
  821. " chartreuse3 chartreuse2 chartreuse1 chartreuse"
  822. " lawngreen darkgreen green forestgreen green3 green2"
  823. " limegreen lime green1 palegreen3 darkseagreen"
  824. " darkseagreen3 darkseagreen2 darkseagreen1"
  825. " mediumforestgreen seagreen2 seagreen1 seagreen3"
  826. " seagreen mediumseagreen springgreen3 springgreen2"
  827. " springgreen1 springgreen mediumspringgreen turquoise"
  828. " mediumturquoise teal darkcyan cyan3 cyan2 cyan1 cyan"
  829. " aqua darkturquoise turquoise3 turquoise2 turquoise1"
  830. " deepskyblue3 deepskyblue2 deepskyblue1 deepskyblue"
  831. " skyblue skyblue3 skyblue2 skyblue1 steelblue3"
  832. " steelblue2 steelblue1 steelblue dodgerblue3"
  833. " dodgerblue2 dodgerblue1 dodgerblue cornflowerblue"
  834. " royalblue3 royalblue2 royalblue1 royalblue mediumblue"
  835. " blue3 blue2 blue1 blue slateblue3 slateblue2"
  836. " slateblue1 slateblue mediumslateblue mediumpurple3"
  837. " mediumpurple2 mediumpurple1 mediumpurple purple1"
  838. " purple3 purple2 blueviolet purple darkorchid2"
  839. " darkorchid3 darkorchid1 darkorchid darkviolet"
  840. " mediumorchid3 mediumorchid2 mediumorchid1"
  841. " mediumorchid purple darkmagenta magenta3 magenta2"
  842. " magenta1 magenta fuchsia violet orchid3 orchid1 orchid"
  843. " orchid2 violetred mediumvioletred maroon3 maroon2"
  844. " maroon1 deeppink3 deeppink2 deeppink1 deeppink"
  845. " hotpink hotpink1 hotpink2 violetred2 violetred1"
  846. " violetred3 hotpink3 palevioletred3 palevioletred1"
  847. " palevioletred2 palevioletred crimson maroon darkred"
  848. " red3 brown firebrick red2 firebrick3 red1 brown3"
  849. " firebrick2 indianred3 indianred brown2 firebrick1"
  850. " brown1 indianred2 indianred1".split()))
  851.  
  852. def get_color(quelle):
  853. if COLOR.has_key(quelle):
  854. return COLOR[quelle]
  855. return "red"
  856.  
  857.  
  858. def open_ly(filename, fragments):
  859. ly = codecs.open(filename, "w", encoding='utf-8')
  860. print >> ly, r'\documentclass[10pt,a4]{article}'
  861. print >> ly, r'\usepackage[ngerman]{babel}'
  862. # print >> ly, r'\usepackage[absolute,overlay,showboxes]{textpos}'
  863. print >> ly, r'\usepackage[absolute,overlay]{textpos}'
  864. print >> ly, r'\usepackage[T1]{fontenc}'
  865. print >> ly, r'\usepackage[utf8]{inputenc}'
  866. print >> ly, r'\usepackage[condensed,math]{iwona}'
  867. print >> ly, r'\usepackage{tikz}'
  868. print >> ly, r'\setlength{\parindent}{0pt}'
  869. print >> ly, r'\setlength{\TPHorizModule}{1mm}'
  870. print >> ly, r'\setlength{\TPVertModule}{\TPHorizModule}'
  871. print >> ly, r'\pagestyle{empty}'
  872. print >> ly, r'\begin{document}'
  873. title_hpos = 5
  874. title_hsize = DINA4_H - 2 * title_hpos
  875. title_vpos = 148
  876. print >> ly, r"\begin{textblock}{%i}(%i,%i)" % (title_hsize, title_hpos, title_vpos)
  877. quellen = dict()
  878. for page in xrange(PAGES):
  879. for frag in fragments[page]:
  880. cat = frag['src_cat']
  881. if cat != "" and cat != "N/A":
  882. quellen[cat] = quellen.get(cat, 0) + 1
  883. print >> ly, r'\large{}und: '
  884. names = quellen.keys()
  885. names.sort()
  886. print >> ly, ", ".join(names)
  887. print >> ly, r"\end{textblock}"
  888.  
  889. subtitle_hpos = 10
  890. subtitle_hsize = 4 + DINA4_H - 2 * subtitle_hpos
  891. subtitle_vpos = 259
  892. print >> ly, r"\begin{textblock}{%i}(%i,%i)" % (subtitle_hsize, subtitle_hpos, subtitle_vpos)
  893. print >> ly, r'\center{\Huge{}GuttenPlag - Kritische Edition vom \today}'
  894. print >> ly, r"\end{textblock}"
  895.  
  896. return ly
  897.  
  898. def close_ly(ly):
  899. print >> ly, '\end{document}'
  900. ly.close()
  901.  
  902. zlnpos = dict()
  903. zfnpos = dict()
  904. def get_zeilenpositionen():
  905. zp = open("zeilenpositionen.txt")
  906. for line in zp:
  907. line = line.strip()
  908. if line == "" or line[0] == "#" or line.find(":") == -1:
  909. continue
  910. (lnr, pos, fnpos) = line.split(":")
  911. lnr = int(lnr)
  912. if pos != "":
  913. pos = map(lambda str: float(str), pos.split(","))
  914. else:
  915. pos = []
  916. if fnpos != "":
  917. fnpos = map(lambda str: float(str), fnpos.split(","))
  918. else:
  919. fnpos = []
  920. zlnpos[lnr] = pos
  921. zfnpos[lnr] = fnpos
  922. zp.close()
  923.  
  924. LINEHEIGHT = 6
  925. FNLINEHEIGHT = 4
  926.  
  927. def get_line_start_mm(page, lnr):
  928. if lnr < 101:
  929. pos = zlnpos
  930. else:
  931. pos = zfnpos
  932. lnr = lnr - 100
  933.  
  934. lnr = lnr - 1;
  935. val = pos[page][lnr] * DINA4_V / 100.0
  936. # Korrektur...
  937. MIDDLE = 230.0
  938. STRETCH = 1.11
  939. val = (val - MIDDLE) * STRETCH + MIDDLE
  940. return val
  941.  
  942. def get_line_end_mm(page, lnr):
  943. if lnr < 101:
  944. return get_line_start_mm(page, lnr) + LINEHEIGHT
  945. else:
  946. return get_line_start_mm(page, lnr) + FNLINEHEIGHT
  947.  
  948. def dump_fragment(stream, frag):
  949. print >> stream, "Fundort : p. %s, %s" % (frag['dst_page'], frag['dst_line'])
  950. # print >> stream, frag['dst_text']
  951. # print >> stream, "Original: p. %s, %s in %s" % (frag['src_page'], frag['src_line'], frag['src_author'])
  952. # print >> stream, frag['src_text']
  953. # print >> stream, "Kategorie: %s %s" % (frag['plagtype'], frag['categories'])
  954. # print >> stream, "XXX", frag['plagtype'], frag['src_cat']
  955. # print >> stream, "Anmerkung: %s" % frag['comment']
  956.  
  957. def process_page(fragments, page):
  958. title = page.getAttribute ("title")
  959. print "Processing %s" % title
  960. data = page.getElementsByTagName("rev")[0].childNodes[0].data
  961. data = data.encode("utf-8")
  962. plb_layout = parseString(data).getElementsByTagName("plb_layout")[0]
  963. frag = dict()
  964. frag['title'] = title
  965. frag['dst_page'] = plb_layout.getAttribute('val_1')
  966. frag['dst_line'] = plb_layout.getAttribute('val_2')
  967. frag['dst_text'] = plb_layout.getAttribute('val_3')
  968. frag['src_page'] = plb_layout.getAttribute('val_4')
  969. frag['src_line'] = plb_layout.getAttribute('val_5')
  970. frag['src_text'] = plb_layout.getAttribute('val_6')
  971.  
  972. plagtype = plb_layout.getAttribute('val_7')
  973. frag['plagtype'] = plagtype
  974.  
  975. frag['in_lit'] = plb_layout.getAttribute('val_8')
  976. frag['src_author'] = plb_layout.getAttribute('val_9')
  977. frag['src_link'] = plb_layout.getAttribute('val_10')
  978.  
  979. frag['comment'] = plb_layout.getAttribute('val_11')
  980.  
  981. # Determine source category from "[[Kategorie:xyz]]"
  982. categories = plb_layout.getAttribute('cswikitext')
  983. cats = categories.split("\r\n")
  984. cats = map(lambda str: str[12:-2], cats)
  985. # Can sometimes happen.
  986. cats = filter(lambda str: str != '', cats)
  987. frag['categories'] = cats
  988. src_cat = filter(lambda str: not (str.find("Seite_") == 0
  989. or str.find("Seite ") == 0
  990. or str.find("seite_") == 0
  991. or str.find("seite ") == 0
  992. or str == "Wissenschaftlicher Dienst"
  993. or str == "Doppelt-Gemoppelt"
  994. or str == "Rechtschreibfehler"
  995. or str == u'Pr\xfcfung'
  996. or str == u'KopiertesZitat'
  997. or str == u'\xdcbersetzungsPlagiat'
  998. or str == u'Versch\xe4rftesBauernOpfer'
  999. or str == u'BauernOpfer'
  1000. or str == u'KeinPlagiat'
  1001. or str == u'KomplettPlagiat'
  1002. or str == u'Verschleierung'
  1003. or str == u'Verd\xe4chtig'
  1004. or str == plagtype), cats)
  1005.  
  1006. if len(src_cat) == 0:
  1007. print "WARNUNG: [[%s]] (%s) hat keine Quellenkategorie in %s" % (title, plagtype, str(cats))
  1008. frag['src_cat'] = 'N/A';
  1009. elif len(src_cat) > 1:
  1010. print "WARNUNG: [[%s]] (%s) hat mehr als eine Quellenkategorie in %s" % (title, src_cat[0], str(src_cat))
  1011. frag['src_cat'] = src_cat[0]
  1012. else:
  1013. frag['src_cat'] = src_cat[0]
  1014. frag['src_cat'] = frag['src_cat'].replace(u"_",u" ")
  1015.  
  1016. tst_plagtype_cat = filter (lambda str: str == plagtype, cats)
  1017. if len(tst_plagtype_cat) == 0:
  1018. print "WARNUNG: [[%s]] (%s) hat fehlenden oder falschen Kategorietyp in %s" % (title, plagtype, str(cats))
  1019.  
  1020. tst_plagtype_cat = filter(lambda str: str == u'\xdcbersetzungsPlagiat'
  1021. or str == u'Versch\xe4rftesBauernOpfer'
  1022. or str == u'BauernOpfer'
  1023. or str == u'KeinPlagiat'
  1024. or str == u'Strukturplagiat'
  1025. or str == u'HalbsatzFlickerei'
  1026. or str == u'ShakeAndPaste'
  1027. or str == u'KomplettPlagiat'
  1028. or str == u'Verschleierung'
  1029. or str == u'Verd\xe4chtig', cats)
  1030. if len(tst_plagtype_cat) != 1:
  1031. print "WARNUNG: [[%s]] (%s) hat doppelten PlagiatsKategorietyp in %s" % (title, plagtype,
  1032. str(tst_plagtype_cat))
  1033.  
  1034. if frag['dst_page'] == '':
  1035. print "WARNUNG: [[%s]] hat keine Diss. Seitenzahl" % title
  1036. if frag['src_page'] == '':
  1037. print "WARNUNG: [[%s]] hat keine Quellen-Seitenzahl" % title
  1038.  
  1039. if plagtype == u'KeinPlagiat' or plagtype == u'Verd\xe4chtig':
  1040. print "WARNUNG: [[%s]] ignoriert, weil type = %s" % (title, plagtype)
  1041. else:
  1042. fragments[int(frag['dst_page'])].append(frag)
  1043. dump_fragment (sys.stdout, frag)
  1044.  
  1045. def process_file(fragments, filename):
  1046. print "Processing file %s" % file
  1047. dom = parse (file)
  1048. pages = dom.getElementsByTagName("page")
  1049. for page in pages:
  1050. process_page(fragments, page)
  1051.  
  1052. def output_fragments(ly, fragments):
  1053. for page in xrange(PAGES):
  1054. for frag in fragments[page]:
  1055. dst_line = frag['dst_line']
  1056. if dst_line.find("-") != -1:
  1057. (start,end) = map(lambda str: int(str), dst_line.split('-'))
  1058. else:
  1059. start = end = int(dst_line)
  1060. # In mm.
  1061. vpos = get_line_start_mm(page, start)
  1062. vpos_end = get_line_end_mm(page, end)
  1063.  
  1064. # text_color = "red"
  1065. text_color = COLORMAP[get_color (frag['src_cat'])]
  1066. text_alpha = 0.3
  1067. text_hsize = 168
  1068. text_vsize = vpos_end - vpos
  1069. text_hpos = 24
  1070. print >> ly, r"\begin{textblock}{%i}(%i,%i)" % (text_hsize, text_hpos, vpos)
  1071. print >> ly, r'\begin{tikzpicture}'
  1072. print >> ly, r'\definecolor{fragcol}{RGB}{%s}' % text_color
  1073. print >> ly, r'\draw[fill=fragcol,opacity=%f] (0,0) rectangle (%.1f,%.1f);' % (text_alpha,
  1074. text_hsize / 10.0,
  1075. text_vsize / 10.0)
  1076. print >> ly, r'\end{tikzpicture}'
  1077. print >> ly, r"\end{textblock}"
  1078.  
  1079.  
  1080. margin_hsize = 22
  1081. if page % 2 == 0:
  1082. margin_hpos = 1
  1083. else:
  1084. margin_hpos = 193
  1085. print >> ly, r"\begin{textblock}{%i}(%i,%i)\small" % (margin_hsize, margin_hpos, vpos)
  1086. print >> ly, r"%s\\" % (frag['src_cat'])
  1087. if frag['src_page'] != "":
  1088. if frag['src_line'] != "":
  1089. print >> ly, r"S. %s (Z. %s)\\" % (frag['src_page'], frag['src_line'])
  1090. else:
  1091. print >> ly, r"S. %s\\" % frag['src_page']
  1092. else:
  1093. if frag['src_line'] != "":
  1094. # FIXME: WARNUNG?
  1095. print >> ly, r"Z. %s\\" % (frag['src_line'])
  1096. print >> ly, r"%s\\" % (frag['plagtype'])
  1097. print >> ly, r"\end{textblock}"
  1098.  
  1099.  
  1100. if page != PAGES - 1:
  1101. print >> ly, r'\hphantom{1em}'
  1102. print >> ly, r'\newpage'
  1103.  
  1104. get_zeilenpositionen()
  1105.  
  1106. files = []
  1107. for arg in sys.argv[1:]:
  1108. files.append (arg)
  1109.  
  1110. fragments = dict(map(lambda pnr: [pnr, []], xrange(PAGES)))
  1111. for file in files:
  1112. process_file(fragments, file)
  1113.  
  1114. ly = open_ly("overlay-file.ly", fragments)
  1115. output_fragments(ly, fragments)
  1116. close_ly(ly)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement