mirror of
https://github.com/jzillmann/pdf-to-markdown.git
synced 2025-06-24 19:41:24 +02:00
Clean up types
- merge `ItemType`/`BlockType` to `TextType` - fix bug with duplicate and flattened types
This commit is contained in:
parent
3c31c12768
commit
b5f3075bdf
@ -36,34 +36,34 @@
|
||||
}
|
||||
{"page":0,"change":"ContentChange","types":["H1"],"str":"SHERLOCK","dir":"ltr","width":"363.20","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","656.26"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":656.262,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H1"],"str":"HOLMES","dir":"ltr","width":"275.57","height":"59.78","transform":["59.78","0.00","0.00","59.78","159.37","592.48"],"fontName":"NVBKCW+RoyalInitialen","x":159.372,"y":592.4789999999999,"line":1}
|
||||
{"page":1,"change":"ContentChange","types":["H5"],"str":"S IR A RTHUR I GNATIUS","line":0,"x":196.324,"y":702.187,"width":"186.21","height":"20.66","fontName":["KKLGKN+NimbusRomNo9L-Regu"],"dir":["ltr"]}
|
||||
{"page":1,"change":"ContentChange","types":["H4"],"str":"S IR A RTHUR I GNATIUS","line":0,"x":196.324,"y":702.187,"width":"186.21","height":"20.66","fontName":["KKLGKN+NimbusRomNo9L-Regu"],"dir":["ltr"]}
|
||||
{"page":1,"change":"ContentChange","types":["H2"],"str":"C ONAN D OYLE","line":1,"x":214.04500000000002,"y":678.946,"width":"156.34","height":"24.79","fontName":["INBNCB+NimbusRomNo9L-Medi"],"dir":["ltr"]}
|
||||
{"page":1,"change":"ContentChange","types":["H3"],"str":"T HE A DVENTURES O F","line":3,"x":149.122,"y":483.32700000000006,"width":"273.72","height":"29.89","fontName":["INBNCB+NimbusRomNo9L-Medi"],"dir":["ltr"]}
|
||||
{"page":1,"change":"ContentChange","types":["H3"],"str":"SHERLOCK HOLMES","dir":"ltr","width":"327.51","height":"29.89","transform":["29.89","0.00","0.00","29.89","133.40","433.72"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":133.40100000000007,"y":433.7180000000001,"line":4}
|
||||
{"page":4,"change":"ContentChange","types":["H5"],"str":"Adventure I","dir":"ltr","width":"106.74","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":4,"change":"ContentChange","types":["H6"],"str":"I","dir":"ltr","width":"5.58","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","522.94"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":522.942,"line":2}
|
||||
{"page":4,"change":"ContentChange","types":["H4"],"str":"Adventure I","dir":"ltr","width":"106.74","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":4,"change":"ContentChange","types":["H5"],"str":"I","dir":"ltr","width":"5.58","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","522.94"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":522.942,"line":2}
|
||||
{"page":4,"change":"ContentChange","types":["H2"],"str":"T","dir":"ltr","width":"44.05","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","456.23"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":456.232,"line":3}
|
||||
{"page":11,"change":"ContentChange","types":["H6"],"str":"II","dir":"ltr","width":"11.16","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","494.00"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.82799999999993,"y":494.00400000000036,"line":15}
|
||||
{"page":18,"change":"ContentChange","types":["H6"],"str":"III","dir":"ltr","width":"16.74","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","304.32"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.82799999999999,"y":304.3160000000006,"line":29}
|
||||
{"page":22,"change":"ContentChange","types":["H5"],"str":"Adventure II","dir":"ltr","width":"114.78","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":11,"change":"ContentChange","types":["H5"],"str":"II","dir":"ltr","width":"11.16","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","494.00"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.82799999999993,"y":494.00400000000036,"line":15}
|
||||
{"page":18,"change":"ContentChange","types":["H5"],"str":"III","dir":"ltr","width":"16.74","height":"14.35","transform":["14.35","0.00","0.00","14.35","117.83","304.32"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.82799999999999,"y":304.3160000000006,"line":29}
|
||||
{"page":22,"change":"ContentChange","types":["H4"],"str":"Adventure II","dir":"ltr","width":"114.78","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":22,"change":"ContentChange","types":["H2"],"str":"I","dir":"ltr","width":"37.06","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","485.40"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":485.39500000000004,"line":2}
|
||||
{"page":39,"change":"ContentChange","types":["H5"],"str":"Adventure III","dir":"ltr","width":"122.82","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":39,"change":"ContentChange","types":["H4"],"str":"Adventure III","dir":"ltr","width":"122.82","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":39,"change":"ContentChange","types":["H2"],"str":"“ M","line":2,"x":117.828,"y":486.678,"width":"49.74","height":"59.78","fontName":["KKLGKN+NimbusRomNo9L-Regu","NVBKCW+RoyalInitialen"],"dir":["ltr"]}
|
||||
{"page":52,"change":"ContentChange","types":["H5"],"str":"Adventure IV","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":52,"change":"ContentChange","types":["H4"],"str":"Adventure IV","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":52,"change":"ContentChange","types":["H2"],"str":"W","dir":"ltr","width":"48.90","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","485.34"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":485.336,"line":2}
|
||||
{"page":70,"change":"ContentChange","types":["H5"],"str":"Adventure V","dir":"ltr","width":"113.62","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":70,"change":"ContentChange","types":["H4"],"str":"Adventure V","dir":"ltr","width":"113.62","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":70,"change":"ContentChange","types":["H2"],"str":"W","dir":"ltr","width":"48.90","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","485.34"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":485.336,"line":2}
|
||||
{"page":84,"change":"ContentChange","types":["H5"],"str":"Adventure VI","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":84,"change":"ContentChange","types":["H4"],"str":"Adventure VI","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":84,"change":"ContentChange","types":["H2"],"str":"I","dir":"ltr","width":"37.06","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","485.40"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":485.39500000000004,"line":2}
|
||||
{"page":101,"change":"ContentChange","types":["H5"],"str":"Adventure VII","dir":"ltr","width":"129.70","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":101,"change":"ContentChange","types":["H4"],"str":"Adventure VII","dir":"ltr","width":"129.70","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":101,"change":"ContentChange","types":["H2"],"str":"I","dir":"ltr","width":"37.06","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","455.51"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":455.508,"line":3}
|
||||
{"page":116,"change":"ContentChange","types":["H5"],"str":"Adventure VIII","dir":"ltr","width":"137.74","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":116,"change":"ContentChange","types":["H4"],"str":"Adventure VIII","dir":"ltr","width":"137.74","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":116,"change":"ContentChange","types":["H2"],"str":"O","dir":"ltr","width":"50.09","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","455.81"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":455.806,"line":3}
|
||||
{"page":134,"change":"ContentChange","types":["H5"],"str":"Adventure IX","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":134,"change":"ContentChange","types":["H4"],"str":"Adventure IX","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":134,"change":"ContentChange","types":["H2"],"str":"O","dir":"ltr","width":"50.09","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","455.81"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":455.806,"line":3}
|
||||
{"page":149,"change":"ContentChange","types":["H5"],"str":"Adventure X","dir":"ltr","width":"113.62","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":149,"change":"ContentChange","types":["H4"],"str":"Adventure X","dir":"ltr","width":"113.62","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":149,"change":"ContentChange","types":["H2"],"str":"T","dir":"ltr","width":"44.05","height":"59.78","transform":["59.78","0.00","0.00","59.78","117.83","455.57"],"fontName":"NVBKCW+RoyalInitialen","x":117.828,"y":455.567,"line":3}
|
||||
{"page":165,"change":"ContentChange","types":["H5"],"str":"Adventure XI","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":165,"change":"ContentChange","types":["H4"],"str":"Adventure XI","dir":"ltr","width":"121.66","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":165,"change":"ContentChange","types":["H2"],"str":"“ H","line":3,"x":117.828,"y":456.22499999999997,"width":"46.75","height":"59.78","fontName":["KKLGKN+NimbusRomNo9L-Regu","NVBKCW+RoyalInitialen"],"dir":["ltr"]}
|
||||
{"page":183,"change":"ContentChange","types":["H5"],"str":"Adventure XII","dir":"ltr","width":"129.70","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":183,"change":"ContentChange","types":["H4"],"str":"Adventure XII","dir":"ltr","width":"129.70","height":"20.66","transform":["20.66","0.00","0.00","20.66","117.83","630.54"],"fontName":"INBNCB+NimbusRomNo9L-Medi","x":117.828,"y":630.539,"line":0}
|
||||
{"page":183,"change":"ContentChange","types":["H2"],"str":"“ T","line":3,"x":117.828,"y":455.56699999999995,"width":"48.90","height":"59.78","fontName":["KKLGKN+NimbusRomNo9L-Regu","NVBKCW+RoyalInitialen"],"dir":["ltr"]}
|
@ -34,14 +34,14 @@
|
||||
],
|
||||
"globals": {}
|
||||
}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Freies Wissen dank ","dir":"ltr","width":"178.49","height":"15.22","transform":["10.76","10.76","-10.76","10.76","123.28","395.24"],"fontName":"QMZZIE+AvenirLTStd-Black","x":123.278,"y":395.2377,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Creative-Commons-Lizenzen","dir":"ltr","width":"255.25","height":"15.22","transform":["10.76","10.76","-10.76","10.76","81.29","322.31"],"fontName":"QMZZIE+AvenirLTStd-Black","x":81.28529540000001,"y":322.30753500000003,"line":1}
|
||||
{"page":1,"change":"ContentChange","types":["H4"],"str":"CC-Lizenzen","dir":"ltr","width":"100.79","height":"14.00","transform":["14.00","0.00","0.00","14.00","34.02","512.47"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0158,"y":512.4728,"line":26}
|
||||
{"page":2,"change":"ContentChange","types":["H5"],"str":"John H. Weitzmann","dir":"ltr","width":"96.43","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","86.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":86.9291,"line":16}
|
||||
{"page":5,"change":"ContentChange","types":["H5"],"str":"Stell dir eine Welt vor, in der","dir":"ltr","width":"136.99","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","482.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":482.9292,"line":1}
|
||||
{"page":5,"change":"ContentChange","types":["H5"],"str":" jeder Mensch an der Gesamtheit ","dir":"ltr","width":"159.60","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","470.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":470.93019999999996,"line":2}
|
||||
{"page":5,"change":"ContentChange","types":["H5"],"str":"des Wissens teilhaben kann. ","dir":"ltr","width":"134.30","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","458.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":458.93119999999993,"line":3}
|
||||
{"page":5,"change":"ContentChange","types":["H5"],"str":"Das ist unsere Mission.","dir":"ltr","width":"108.99","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","446.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":446.9321999999999,"line":4}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Freies Wissen dank ","dir":"ltr","width":"178.49","height":"15.22","transform":["10.76","10.76","-10.76","10.76","123.28","395.24"],"fontName":"QMZZIE+AvenirLTStd-Black","x":123.278,"y":395.2377,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Creative-Commons-Lizenzen","dir":"ltr","width":"255.25","height":"15.22","transform":["10.76","10.76","-10.76","10.76","81.29","322.31"],"fontName":"QMZZIE+AvenirLTStd-Black","x":81.28529540000001,"y":322.30753500000003,"line":1}
|
||||
{"page":1,"change":"ContentChange","types":["H3"],"str":"CC-Lizenzen","dir":"ltr","width":"100.79","height":"14.00","transform":["14.00","0.00","0.00","14.00","34.02","512.47"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0158,"y":512.4728,"line":26}
|
||||
{"page":2,"change":"ContentChange","types":["H4"],"str":"John H. Weitzmann","dir":"ltr","width":"96.43","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","86.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":86.9291,"line":16}
|
||||
{"page":5,"change":"ContentChange","types":["H4"],"str":"Stell dir eine Welt vor, in der","dir":"ltr","width":"136.99","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","482.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":482.9292,"line":1}
|
||||
{"page":5,"change":"ContentChange","types":["H4"],"str":" jeder Mensch an der Gesamtheit ","dir":"ltr","width":"159.60","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","470.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":470.93019999999996,"line":2}
|
||||
{"page":5,"change":"ContentChange","types":["H4"],"str":"des Wissens teilhaben kann. ","dir":"ltr","width":"134.30","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","458.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":458.93119999999993,"line":3}
|
||||
{"page":5,"change":"ContentChange","types":["H4"],"str":"Das ist unsere Mission.","dir":"ltr","width":"108.99","height":"13.00","transform":["13.00","0.00","0.00","13.00","34.02","446.93"],"fontName":"QMZZIE+AGaramond-Italic","x":34.0157,"y":446.9321999999999,"line":4}
|
||||
{"page":5,"change":"ContentChange","types":["H2"],"str":"1","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","34.02","345.93"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0157,"y":345.9292,"line":6}
|
||||
{"page":7,"change":"ContentChange","types":["H2"],"str":"2","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","215.76","503.81"],"fontName":"QMZZIE+AvenirLTStd-Black","x":215.7638,"y":503.8094,"line":37}
|
||||
{"page":8,"change":"ContentChange","types":["H2"],"str":"3","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","215.76","503.81"],"fontName":"QMZZIE+AvenirLTStd-Black","x":215.7638,"y":503.8094,"line":33}
|
||||
@ -51,4 +51,4 @@
|
||||
{"page":12,"change":"ContentChange","types":["H2"],"str":"7","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","34.02","358.93"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0157,"y":358.9292,"line":11}
|
||||
{"page":13,"change":"ContentChange","types":["H2"],"str":"8","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","34.02","429.93"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0157,"y":429.9292,"line":5}
|
||||
{"page":14,"change":"ContentChange","types":["H2"],"str":"9","dir":"ltr","width":"14.21","height":"24.00","transform":["24.00","0.00","0.00","24.00","34.02","503.81"],"fontName":"QMZZIE+AvenirLTStd-Black","x":34.0157,"y":503.8094,"line":1}
|
||||
{"page":22,"change":"ContentChange","types":["H4"],"str":"Paul Klimpel","dir":"ltr","width":"70.42","height":"14.00","transform":["14.00","0.00","0.00","14.00","215.88","230.93"],"fontName":"QMZZIE+AGaramond-Italic","x":215.8819,"y":230.9291,"line":53}
|
||||
{"page":22,"change":"ContentChange","types":["H3"],"str":"Paul Klimpel","dir":"ltr","width":"70.42","height":"14.00","transform":["14.00","0.00","0.00","14.00","215.88","230.93"],"fontName":"QMZZIE+AGaramond-Italic","x":215.8819,"y":230.9291,"line":53}
|
@ -37,40 +37,40 @@
|
||||
{"page":0,"change":"ContentChange","types":["H1"],"str":"Safe C ommun i cation","line":1,"x":99.264,"y":436.9,"width":"395.03","height":"36.00","fontName":["ABCDEE+Lucida Calligraphy"],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Design, implement and measure: A guide to ","line":2,"x":99.264,"y":387.31,"width":"549.00","height":"26.04","fontName":[null],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"improving transfers of care and handover","line":3,"x":99.264,"y":352.99,"width":"507.23","height":"26.04","fontName":[null],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H4"],"str":"Authors :","line":4,"x":526.63,"y":111.26,"width":"66.46","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H4"],"str":"Nicola Davey & Ali Cole","line":5,"x":526.63,"y":80.04,"width":"175.03","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Authors :","line":4,"x":526.63,"y":111.26,"width":"66.46","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Nicola Davey & Ali Cole","line":5,"x":526.63,"y":80.04,"width":"175.03","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":1,"change":"ContentChange","types":["H2"],"str":"Contents :","line":1,"x":99.264,"y":512.26,"width":"130.55","height":"27.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":2,"change":"ContentChange","types":["H4"],"str":"Creative Commons Attribution – non - commercial ","line":25,"x":99.264,"y":130.34,"width":"344.85","height":"15.96","fontName":[null,"Arial"],"dir":["ltr"]}
|
||||
{"page":4,"change":"ContentChange","types":["H4"],"str":"Why use this guide?","dir":"ltr","width":"155.37","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","284.57"],"x":99.264,"y":284.57,"line":13}
|
||||
{"page":6,"change":"ContentChange","types":["H4"],"str":"‘Passing the baton’","dir":"ltr","width":"146.56","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"fontName":"Arial,Bold","x":99.264,"y":523.66,"line":1}
|
||||
{"page":2,"change":"ContentChange","types":["H3"],"str":"Creative Commons Attribution – non - commercial ","line":25,"x":99.264,"y":130.34,"width":"344.85","height":"15.96","fontName":[null,"Arial"],"dir":["ltr"]}
|
||||
{"page":4,"change":"ContentChange","types":["H3"],"str":"Why use this guide?","dir":"ltr","width":"155.37","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","284.57"],"x":99.264,"y":284.57,"line":13}
|
||||
{"page":6,"change":"ContentChange","types":["H3"],"str":"‘Passing the baton’","dir":"ltr","width":"146.56","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"fontName":"Arial,Bold","x":99.264,"y":523.66,"line":1}
|
||||
{"page":7,"change":"ContentChange","types":["H2"],"str":"P lanned, structured transfer of care : what does ","line":1,"x":99.264,"y":512.26,"width":"636.03","height":"27.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":7,"change":"ContentChange","types":["H2"],"str":"it look like?","dir":"ltr","width":"153.92","height":"27.96","transform":["27.96","0.00","0.00","27.96","99.26","479.98"],"x":99.264,"y":479.98,"line":2}
|
||||
{"page":8,"change":"ContentChange","types":["H2"],"str":"How do you achieve it?","dir":"ltr","width":"311.11","height":"27.96","transform":["27.96","0.00","0.00","27.96","99.26","512.26"],"x":99.264,"y":512.26,"line":1}
|
||||
{"page":9,"change":"ContentChange","types":["H3"],"str":"Start out","dir":"ltr","width":"98.74","height":"24.00","transform":["24.00","0.00","0.00","24.00","155.18","484.18"],"x":155.18,"y":484.18,"line":1}
|
||||
{"page":11,"change":"ContentChange","types":["H4"],"str":"What does ‘good’ look like?","line":1,"x":99.264,"y":523.66,"width":"207.10","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":12,"change":"ContentChange","types":["H3"],"str":"Define and scope","dir":"ltr","width":"198.62","height":"24.00","transform":["24.00","0.00","0.00","24.00","156.26","488.50"],"x":156.26,"y":488.5,"line":1}
|
||||
{"page":12,"change":"ContentChange","types":["H4"],"str":"What are we trying to accomplish?","dir":"ltr","width":"263.95","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","276.65"],"x":99.264,"y":276.65,"line":11}
|
||||
{"page":13,"change":"ContentChange","types":["H4"],"str":"Link your improvement project to your organisation ’s strategic aims ","line":1,"x":99.264,"y":523.66,"width":"523.31","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":15,"change":"ContentChange","types":["H4"],"str":"What is the scale of your improvement project?","line":1,"x":99.264,"y":523.66,"width":"356.43","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":15,"change":"ContentChange","types":["H4"],"str":"E ngage staff, patients and users and s et up your project team ","line":6,"x":99.264,"y":432.22,"width":"469.06","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":16,"change":"ContentChange","types":["H4"],"str":"Who to include in your team?","dir":"ltr","width":"223.84","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":17,"change":"ContentChange","types":["H4"],"str":"P utting it all together","line":1,"x":99.264,"y":495.1,"width":"159.71","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":18,"change":"ContentChange","types":["H3"],"str":"Measure and understand","dir":"ltr","width":"284.04","height":"24.00","transform":["24.00","0.00","0.00","24.00","158.42","478.18"],"x":158.42,"y":478.18,"line":1}
|
||||
{"page":20,"change":"ContentChange","types":["H4"],"str":"Choose your measures and start collecting your baseline data","line":1,"x":99.264,"y":523.66,"width":"468.22","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":22,"change":"ContentChange","types":["H4"],"str":"Capture and display the data","dir":"ltr","width":"218.57","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":23,"change":"ContentChange","types":["H3"],"str":"Design and plan","dir":"ltr","width":"185.38","height":"24.00","transform":["24.00","0.00","0.00","24.00","154.82","484.18"],"x":154.82,"y":484.18,"line":1}
|
||||
{"page":24,"change":"ContentChange","types":["H4"],"str":"Where to s tart?","line":4,"x":99.264,"y":453.46,"width":"117.23","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":26,"change":"ContentChange","types":["H4"],"str":"Generate imp rovement ideas","line":1,"x":99.264,"y":523.66,"width":"219.53","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":27,"change":"ContentChange","types":["H4"],"str":"Design your change intervention ( s )","line":1,"x":99.264,"y":523.66,"width":"268.18","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":28,"change":"ContentChange","types":["H4"],"str":"Make it your own","dir":"ltr","width":"129.68","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":29,"change":"ContentChange","types":["H4"],"str":"Use ‘d ot v oting ’ to define your ‘ minimum data set ’","line":1,"x":99.264,"y":523.66,"width":"374.53","height":"15.96","fontName":["Arial,Bold",null],"dir":["ltr"]}
|
||||
{"page":30,"change":"ContentChange","types":["H4"],"str":"Using ‘structured communication t ool s","line":1,"x":99.264,"y":523.66,"width":"293.07","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":32,"change":"ContentChange","types":["H4"],"str":"Document y our s tandard p rocess","line":8,"x":99.264,"y":402.31,"width":"255.06","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":32,"change":"ContentChange","types":["H4"],"str":"Choose and review your measures ","line":13,"x":99.264,"y":310.85,"width":"268.19","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":33,"change":"ContentChange","types":["H3"],"str":"Pilot and implement","dir":"ltr","width":"228.10","height":"24.00","transform":["24.00","0.00","0.00","24.00","155.18","488.50"],"x":155.18,"y":488.5,"line":1}
|
||||
{"page":35,"change":"ContentChange","types":["H4"],"str":"Plan for implementation","dir":"ltr","width":"182.10","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":37,"change":"ContentChange","types":["H3"],"str":"Sustain and share","dir":"ltr","width":"206.64","height":"24.00","transform":["24.00","0.00","0.00","24.00","159.38","480.82"],"x":159.38,"y":480.82,"line":1}
|
||||
{"page":38,"change":"ContentChange","types":["H4"],"str":"Share and celebrate success","line":1,"x":99.264,"y":523.66,"width":"215.03","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":38,"change":"ContentChange","types":["H4"],"str":"Keep measuring ....","line":11,"x":99.264,"y":332.11,"width":"142.18","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":48,"change":"ContentChange","types":["H5"],"str":"Acute example","dir":"ltr","width":"86.67","height":"14.40","transform":["14.44","0.00","0.00","14.40","367.83","485.36"],"fontName":"ABCDEE+Calibri","x":367.828903554016,"y":485.358469,"line":4}
|
||||
{"page":59,"change":"ContentChange","types":["H4"],"str":"Product timeline ","dir":"ltr","width":"119.09","height":"15.96","transform":["15.96","0.00","0.00","15.96","53.88","520.78"],"x":53.88,"y":520.78,"line":1}
|
||||
{"page":9,"change":"ContentChange","types":["H2"],"str":"Start out","dir":"ltr","width":"98.74","height":"24.00","transform":["24.00","0.00","0.00","24.00","155.18","484.18"],"x":155.18,"y":484.18,"line":1}
|
||||
{"page":11,"change":"ContentChange","types":["H3"],"str":"What does ‘good’ look like?","line":1,"x":99.264,"y":523.66,"width":"207.10","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":12,"change":"ContentChange","types":["H2"],"str":"Define and scope","dir":"ltr","width":"198.62","height":"24.00","transform":["24.00","0.00","0.00","24.00","156.26","488.50"],"x":156.26,"y":488.5,"line":1}
|
||||
{"page":12,"change":"ContentChange","types":["H3"],"str":"What are we trying to accomplish?","dir":"ltr","width":"263.95","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","276.65"],"x":99.264,"y":276.65,"line":11}
|
||||
{"page":13,"change":"ContentChange","types":["H3"],"str":"Link your improvement project to your organisation ’s strategic aims ","line":1,"x":99.264,"y":523.66,"width":"523.31","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":15,"change":"ContentChange","types":["H3"],"str":"What is the scale of your improvement project?","line":1,"x":99.264,"y":523.66,"width":"356.43","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":15,"change":"ContentChange","types":["H3"],"str":"E ngage staff, patients and users and s et up your project team ","line":6,"x":99.264,"y":432.22,"width":"469.06","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":16,"change":"ContentChange","types":["H3"],"str":"Who to include in your team?","dir":"ltr","width":"223.84","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":17,"change":"ContentChange","types":["H3"],"str":"P utting it all together","line":1,"x":99.264,"y":495.1,"width":"159.71","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":18,"change":"ContentChange","types":["H2"],"str":"Measure and understand","dir":"ltr","width":"284.04","height":"24.00","transform":["24.00","0.00","0.00","24.00","158.42","478.18"],"x":158.42,"y":478.18,"line":1}
|
||||
{"page":20,"change":"ContentChange","types":["H3"],"str":"Choose your measures and start collecting your baseline data","line":1,"x":99.264,"y":523.66,"width":"468.22","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":22,"change":"ContentChange","types":["H3"],"str":"Capture and display the data","dir":"ltr","width":"218.57","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":23,"change":"ContentChange","types":["H2"],"str":"Design and plan","dir":"ltr","width":"185.38","height":"24.00","transform":["24.00","0.00","0.00","24.00","154.82","484.18"],"x":154.82,"y":484.18,"line":1}
|
||||
{"page":24,"change":"ContentChange","types":["H3"],"str":"Where to s tart?","line":4,"x":99.264,"y":453.46,"width":"117.23","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":26,"change":"ContentChange","types":["H3"],"str":"Generate imp rovement ideas","line":1,"x":99.264,"y":523.66,"width":"219.53","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":27,"change":"ContentChange","types":["H3"],"str":"Design your change intervention ( s )","line":1,"x":99.264,"y":523.66,"width":"268.18","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":28,"change":"ContentChange","types":["H3"],"str":"Make it your own","dir":"ltr","width":"129.68","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":29,"change":"ContentChange","types":["H3"],"str":"Use ‘d ot v oting ’ to define your ‘ minimum data set ’","line":1,"x":99.264,"y":523.66,"width":"374.53","height":"15.96","fontName":["Arial,Bold",null],"dir":["ltr"]}
|
||||
{"page":30,"change":"ContentChange","types":["H3"],"str":"Using ‘structured communication t ool s","line":1,"x":99.264,"y":523.66,"width":"293.07","height":"15.96","fontName":[null,"Arial,Bold"],"dir":["ltr"]}
|
||||
{"page":32,"change":"ContentChange","types":["H3"],"str":"Document y our s tandard p rocess","line":8,"x":99.264,"y":402.31,"width":"255.06","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":32,"change":"ContentChange","types":["H3"],"str":"Choose and review your measures ","line":13,"x":99.264,"y":310.85,"width":"268.19","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":33,"change":"ContentChange","types":["H2"],"str":"Pilot and implement","dir":"ltr","width":"228.10","height":"24.00","transform":["24.00","0.00","0.00","24.00","155.18","488.50"],"x":155.18,"y":488.5,"line":1}
|
||||
{"page":35,"change":"ContentChange","types":["H3"],"str":"Plan for implementation","dir":"ltr","width":"182.10","height":"15.96","transform":["15.96","0.00","0.00","15.96","99.26","523.66"],"x":99.264,"y":523.66,"line":1}
|
||||
{"page":37,"change":"ContentChange","types":["H2"],"str":"Sustain and share","dir":"ltr","width":"206.64","height":"24.00","transform":["24.00","0.00","0.00","24.00","159.38","480.82"],"x":159.38,"y":480.82,"line":1}
|
||||
{"page":38,"change":"ContentChange","types":["H3"],"str":"Share and celebrate success","line":1,"x":99.264,"y":523.66,"width":"215.03","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":38,"change":"ContentChange","types":["H3"],"str":"Keep measuring ....","line":11,"x":99.264,"y":332.11,"width":"142.18","height":"15.96","fontName":[null],"dir":["ltr"]}
|
||||
{"page":48,"change":"ContentChange","types":["H4"],"str":"Acute example","dir":"ltr","width":"86.67","height":"14.40","transform":["14.44","0.00","0.00","14.40","367.83","485.36"],"fontName":"ABCDEE+Calibri","x":367.828903554016,"y":485.358469,"line":4}
|
||||
{"page":59,"change":"ContentChange","types":["H3"],"str":"Product timeline ","dir":"ltr","width":"119.09","height":"15.96","transform":["15.96","0.00","0.00","15.96","53.88","520.78"],"x":53.88,"y":520.78,"line":1}
|
@ -34,9 +34,9 @@
|
||||
],
|
||||
"globals": {}
|
||||
}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"St Mary the Virgin, Witney","dir":"ltr","width":"299.73","height":"24.00","transform":["24.00","0.00","0.00","24.00","501.17","180.62"],"fontName":"Gill Sans MT Bold","x":501.167,"y":180.623,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H4"],"str":"Social Audit January 2012","dir":"ltr","width":"298.23","height":"18.00","transform":["18.00","0.00","0.00","18.00","501.17","147.59"],"fontName":"Gill Sans MT","x":501.167,"y":147.591,"line":1}
|
||||
{"page":0,"change":"ContentChange","types":["H5"],"str":"Catriona Robertson","dir":"ltr","width":"148.81","height":"16.00","transform":["16.00","0.00","0.00","16.00","503.78","78.51"],"fontName":"Gill Sans MT Bold","x":503.776,"y":78.514,"line":2}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"St Mary the Virgin, Witney","dir":"ltr","width":"299.73","height":"24.00","transform":["24.00","0.00","0.00","24.00","501.17","180.62"],"fontName":"Gill Sans MT Bold","x":501.167,"y":180.623,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Social Audit January 2012","dir":"ltr","width":"298.23","height":"18.00","transform":["18.00","0.00","0.00","18.00","501.17","147.59"],"fontName":"Gill Sans MT","x":501.167,"y":147.591,"line":1}
|
||||
{"page":0,"change":"ContentChange","types":["H4"],"str":"Catriona Robertson","dir":"ltr","width":"148.81","height":"16.00","transform":["16.00","0.00","0.00","16.00","503.78","78.51"],"fontName":"Gill Sans MT Bold","x":503.776,"y":78.514,"line":2}
|
||||
{"page":5,"change":"ContentChange","types":["H2"],"str":"Introduction","dir":"ltr","width":"184.61","height":"36.00","transform":["36.00","0.00","0.00","36.00","34.02","525.26"],"fontName":"Gill Sans MT","x":34.015,"y":525.26,"line":0}
|
||||
{"page":7,"change":"ContentChange","types":["H2"],"str":"History","dir":"ltr","width":"112.19","height":"36.00","transform":["36.00","0.00","0.00","36.00","34.02","525.26"],"fontName":"Gill Sans MT","x":34.015,"y":525.26,"line":0}
|
||||
{"page":8,"change":"ContentChange","types":["H2"],"str":"History","dir":"ltr","width":"112.19","height":"36.00","transform":["36.00","0.00","0.00","36.00","462.74","525.26"],"fontName":"Gill Sans MT","x":462.744,"y":525.26,"line":0}
|
||||
|
@ -38,51 +38,51 @@
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Aufwertung der Produktionskette ","dir":"ltr","width":"284.97","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","375.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":375.9803,"line":1}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"von Holzbiokohle für Energie, ","dir":"ltr","width":"252.66","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","353.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":353.9803,"line":2}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Bodenfruchtbarkeit und Klimaschutz","dir":"ltr","width":"305.41","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","331.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":331.9803,"line":3}
|
||||
{"page":0,"change":"ContentChange","types":["H4"],"str":"Giustino Tonon (Hrsg.)","dir":"ltr","width":"132.32","height":"13.00","transform":["13.00","0.00","0.00","13.00","56.27","296.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":296.9803,"line":4}
|
||||
{"page":0,"change":"ContentChange","types":["H3"],"str":"Giustino Tonon (Hrsg.)","dir":"ltr","width":"132.32","height":"13.00","transform":["13.00","0.00","0.00","13.00","56.27","296.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":296.9803,"line":4}
|
||||
{"page":3,"change":"ContentChange","types":["H1"],"str":"WOOD-UP","dir":"ltr","width":"312.99","height":"64.00","transform":["64.00","0.00","0.00","64.00","55.56","408.09"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":55.5591,"y":408.0945,"line":0}
|
||||
{"page":3,"change":"ContentChange","types":["H2"],"str":"Aufwertung der Produktionskette ","dir":"ltr","width":"284.97","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","375.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":375.9803,"line":1}
|
||||
{"page":3,"change":"ContentChange","types":["H2"],"str":"von Holzbiokohle für Energie, ","dir":"ltr","width":"252.66","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","353.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":353.9803,"line":2}
|
||||
{"page":3,"change":"ContentChange","types":["H2"],"str":"Bodenfruchtbarkeit und Klimaschutz","dir":"ltr","width":"305.41","height":"18.00","transform":["18.00","0.00","0.00","18.00","56.27","331.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":331.9803,"line":3}
|
||||
{"page":3,"change":"ContentChange","types":["H4"],"str":"Giustino Tonon (Hrsg.)","dir":"ltr","width":"132.32","height":"13.00","transform":["13.00","0.00","0.00","13.00","56.27","296.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":296.9803,"line":4}
|
||||
{"page":12,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":6,"x":68.04,"y":480.36,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":14,"change":"ContentChange","types":["H5"],"str":"2. Materialien und Methoden","line":15,"x":68.03999999999999,"y":352.38,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":21,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse und Diskussion","line":5,"x":70.92,"y":492.36,"width":"154.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":41,"change":"ContentChange","types":["H5"],"str":"4. Technisch- wirtschaftliche Analyse möglicher Eingriffe ","line":2,"x":70.92,"y":564.36,"width":"295.98","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":41,"change":"ContentChange","types":["H5"],"str":"zur Anlagenoptimierung in Hinblick auf Polygeneration","dir":"ltr","width":"288.06","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","550.56"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":550.5600000000001,"line":3}
|
||||
{"page":51,"change":"ContentChange","types":["H5"],"str":"5. Schlussfolgerungen","line":2,"x":70.92,"y":564.36,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":56,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":2,"x":68.04,"y":564.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":59,"change":"ContentChange","types":["H5"],"str":"2. Materialien und Methoden ","line":13,"x":70.92,"y":394.26,"width":"155.40","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":62,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse und Diskussion ","line":11,"x":68.04,"y":408.24,"width":"161.40","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":76,"change":"ContentChange","types":["H5"],"str":"4. Schlussfolgerungen","line":26,"x":68.04,"y":198.24,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":82,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":2,"x":68.04,"y":569.9999,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":84,"change":"ContentChange","types":["H5"],"str":"2. Materialien und Methoden","line":24,"x":68.04,"y":232.02,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":88,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse und Diskussion","line":4,"x":68.04,"y":512.04,"width":"154.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":97,"change":"ContentChange","types":["H5"],"str":"4. Schlussfolgerungen","line":3,"x":70.92,"y":569.9999,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":102,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":16,"x":68.04,"y":342.42,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":106,"change":"ContentChange","types":["H5"],"str":"2. Materialien und Methoden","line":2,"x":68.04,"y":561.42,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":119,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse","line":19,"x":70.92,"y":279.42,"width":"69.99","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":139,"change":"ContentChange","types":["H5"],"str":"4. Diskussion","line":11,"x":70.92,"y":368.16,"width":"67.93","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":144,"change":"ContentChange","types":["H5"],"str":"5. Schlussfolgerungen","line":14,"x":68.04,"y":363.42,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":150,"change":"ContentChange","types":["H5"],"str":"1. Anwendung von Biochar als Bodenverbesserungsmittel: ","line":20,"x":68.04,"y":291.24,"width":"307.49","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":150,"change":"ContentChange","types":["H5"],"str":"Wirkungen auf die Gesamtfruchtbarkeit der Böden und ","dir":"ltr","width":"293.46","height":"12.00","transform":["12.00","0.00","0.00","12.00","85.02","277.44"],"fontName":"CRDKGT+ArialMT","x":85.01999999999998,"y":277.44,"line":21}
|
||||
{"page":150,"change":"ContentChange","types":["H5"],"str":"die Wachstumsperformance der Pflanzen","dir":"ltr","width":"219.96","height":"12.00","transform":["12.00","0.00","0.00","12.00","85.02","263.64"],"fontName":"CRDKGT+ArialMT","x":85.01999999999998,"y":263.64,"line":22}
|
||||
{"page":154,"change":"ContentChange","types":["H5"],"str":"2. W irkungen der Anwendung von Biochar auf den Stick -","line":2,"x":68.04,"y":564.24,"width":"307.54","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":154,"change":"ContentChange","types":["H5"],"str":"stoffzyklus von getopften Weinpflanzen","line":3,"x":85.02000000000004,"y":550.44,"width":"208.09","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":165,"change":"ContentChange","types":["H5"],"str":"3. Wirkungen der Nutzung von Biochar auf die hydrischen ","line":2,"x":70.92,"y":564.24,"width":"306.75","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":165,"change":"ContentChange","types":["H5"],"str":"Eigenschaften der Substrate und die potenziellen ","dir":"ltr","width":"264.90","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","550.44"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":550.44,"line":3}
|
||||
{"page":165,"change":"ContentChange","types":["H5"],"str":"Stickstoffverluste durch Auslaugung ","dir":"ltr","width":"194.14","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","536.64"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":536.6400000000001,"line":4}
|
||||
{"page":169,"change":"ContentChange","types":["H5"],"str":"4. Wirkungen der Anwendung von Biochar auf den ","line":6,"x":70.92,"y":273.24,"width":"268.11","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":169,"change":"ContentChange","types":["H5"],"str":"physiologischen Zustand der einem zunehmenden ","dir":"ltr","width":"271.44","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","259.44"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":259.44,"line":7}
|
||||
{"page":169,"change":"ContentChange","types":["H5"],"str":"Trockenstress ausgesetzten Weinpflanzen","dir":"ltr","width":"226.08","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","245.64"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":245.64,"line":8}
|
||||
{"page":173,"change":"ContentChange","types":["H5"],"str":"5. Schluss bemerkungen","line":2,"x":70.92,"y":564.24,"width":"125.34","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":180,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":26,"x":68.04,"y":210.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":182,"change":"ContentChange","types":["H5"],"str":"2. Materialien und Methoden","line":2,"x":68.04,"y":564.24,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":3,"change":"ContentChange","types":["H3"],"str":"Giustino Tonon (Hrsg.)","dir":"ltr","width":"132.32","height":"13.00","transform":["13.00","0.00","0.00","13.00","56.27","296.98"],"fontName":"NXPYEX+AkzidenzGroteskPro-Bold","x":56.2677,"y":296.9803,"line":4}
|
||||
{"page":12,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":6,"x":68.04,"y":480.36,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":14,"change":"ContentChange","types":["H4"],"str":"2. Materialien und Methoden","line":15,"x":68.03999999999999,"y":352.38,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":21,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse und Diskussion","line":5,"x":70.92,"y":492.36,"width":"154.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":41,"change":"ContentChange","types":["H4"],"str":"4. Technisch- wirtschaftliche Analyse möglicher Eingriffe ","line":2,"x":70.92,"y":564.36,"width":"295.98","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":41,"change":"ContentChange","types":["H4"],"str":"zur Anlagenoptimierung in Hinblick auf Polygeneration","dir":"ltr","width":"288.06","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","550.56"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":550.5600000000001,"line":3}
|
||||
{"page":51,"change":"ContentChange","types":["H4"],"str":"5. Schlussfolgerungen","line":2,"x":70.92,"y":564.36,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":56,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":2,"x":68.04,"y":564.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":59,"change":"ContentChange","types":["H4"],"str":"2. Materialien und Methoden ","line":13,"x":70.92,"y":394.26,"width":"155.40","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":62,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse und Diskussion ","line":11,"x":68.04,"y":408.24,"width":"161.40","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":76,"change":"ContentChange","types":["H4"],"str":"4. Schlussfolgerungen","line":26,"x":68.04,"y":198.24,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":82,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":2,"x":68.04,"y":569.9999,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":84,"change":"ContentChange","types":["H4"],"str":"2. Materialien und Methoden","line":24,"x":68.04,"y":232.02,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":88,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse und Diskussion","line":4,"x":68.04,"y":512.04,"width":"154.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":97,"change":"ContentChange","types":["H4"],"str":"4. Schlussfolgerungen","line":3,"x":70.92,"y":569.9999,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":102,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":16,"x":68.04,"y":342.42,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":106,"change":"ContentChange","types":["H4"],"str":"2. Materialien und Methoden","line":2,"x":68.04,"y":561.42,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":119,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse","line":19,"x":70.92,"y":279.42,"width":"69.99","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":139,"change":"ContentChange","types":["H4"],"str":"4. Diskussion","line":11,"x":70.92,"y":368.16,"width":"67.93","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":144,"change":"ContentChange","types":["H4"],"str":"5. Schlussfolgerungen","line":14,"x":68.04,"y":363.42,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":150,"change":"ContentChange","types":["H4"],"str":"1. Anwendung von Biochar als Bodenverbesserungsmittel: ","line":20,"x":68.04,"y":291.24,"width":"307.49","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":150,"change":"ContentChange","types":["H4"],"str":"Wirkungen auf die Gesamtfruchtbarkeit der Böden und ","dir":"ltr","width":"293.46","height":"12.00","transform":["12.00","0.00","0.00","12.00","85.02","277.44"],"fontName":"CRDKGT+ArialMT","x":85.01999999999998,"y":277.44,"line":21}
|
||||
{"page":150,"change":"ContentChange","types":["H4"],"str":"die Wachstumsperformance der Pflanzen","dir":"ltr","width":"219.96","height":"12.00","transform":["12.00","0.00","0.00","12.00","85.02","263.64"],"fontName":"CRDKGT+ArialMT","x":85.01999999999998,"y":263.64,"line":22}
|
||||
{"page":154,"change":"ContentChange","types":["H4"],"str":"2. W irkungen der Anwendung von Biochar auf den Stick -","line":2,"x":68.04,"y":564.24,"width":"307.54","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":154,"change":"ContentChange","types":["H4"],"str":"stoffzyklus von getopften Weinpflanzen","line":3,"x":85.02000000000004,"y":550.44,"width":"208.09","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":165,"change":"ContentChange","types":["H4"],"str":"3. Wirkungen der Nutzung von Biochar auf die hydrischen ","line":2,"x":70.92,"y":564.24,"width":"306.75","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":165,"change":"ContentChange","types":["H4"],"str":"Eigenschaften der Substrate und die potenziellen ","dir":"ltr","width":"264.90","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","550.44"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":550.44,"line":3}
|
||||
{"page":165,"change":"ContentChange","types":["H4"],"str":"Stickstoffverluste durch Auslaugung ","dir":"ltr","width":"194.14","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","536.64"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":536.6400000000001,"line":4}
|
||||
{"page":169,"change":"ContentChange","types":["H4"],"str":"4. Wirkungen der Anwendung von Biochar auf den ","line":6,"x":70.92,"y":273.24,"width":"268.11","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":169,"change":"ContentChange","types":["H4"],"str":"physiologischen Zustand der einem zunehmenden ","dir":"ltr","width":"271.44","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","259.44"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":259.44,"line":7}
|
||||
{"page":169,"change":"ContentChange","types":["H4"],"str":"Trockenstress ausgesetzten Weinpflanzen","dir":"ltr","width":"226.08","height":"12.00","transform":["12.00","0.00","0.00","12.00","87.90","245.64"],"fontName":"CRDKGT+ArialMT","x":87.89999999999999,"y":245.64,"line":8}
|
||||
{"page":173,"change":"ContentChange","types":["H4"],"str":"5. Schluss bemerkungen","line":2,"x":70.92,"y":564.24,"width":"125.34","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":180,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":26,"x":68.04,"y":210.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":182,"change":"ContentChange","types":["H4"],"str":"2. Materialien und Methoden","line":2,"x":68.04,"y":564.24,"width":"148.71","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":187,"change":"ContentChange","types":["H2"],"str":"𝑓𝑓 =","line":3,"x":70.92,"y":539.7,"width":"18.13","height":"13.98","fontName":["CJUSQJ+CambriaMath","WASIKV+CambriaMath"],"dir":["ltr"]}
|
||||
{"page":190,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse ","line":20,"x":68.04,"y":279.24,"width":"73.38","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":200,"change":"ContentChange","types":["H5"],"str":"4. Diskussion","line":28,"x":68.04,"y":278.94,"width":"67.93","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":207,"change":"ContentChange","types":["H5"],"str":"5. Schlussfolgerungen","line":13,"x":70.92,"y":394.62,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":214,"change":"ContentChange","types":["H5"],"str":"1. Einleitung","line":16,"x":68.04,"y":345.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":216,"change":"ContentChange","types":["H5"],"str":"2. Mate rialien und Methoden","line":19,"x":68.04,"y":296.22,"width":"148.74","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":235,"change":"ContentChange","types":["H5"],"str":"3. Ergebnisse und Diskussion","dir":"ltr","width":"158.04","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","564.24"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":564.24,"line":2}
|
||||
{"page":249,"change":"ContentChange","types":["H5"],"str":"4. Perspektiven","dir":"ltr","width":"82.68","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","564.24"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":564.24,"line":2}
|
||||
{"page":251,"change":"ContentChange","types":["H5"],"str":"5. Schlussfolgerungen","dir":"ltr","width":"118.68","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","506.22"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":506.22,"line":4}
|
||||
{"page":190,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse ","line":20,"x":68.04,"y":279.24,"width":"73.38","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":200,"change":"ContentChange","types":["H4"],"str":"4. Diskussion","line":28,"x":68.04,"y":278.94,"width":"67.93","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":207,"change":"ContentChange","types":["H4"],"str":"5. Schlussfolgerungen","line":13,"x":70.92,"y":394.62,"width":"115.35","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":214,"change":"ContentChange","types":["H4"],"str":"1. Einleitung","line":16,"x":68.04,"y":345.24,"width":"62.60","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":216,"change":"ContentChange","types":["H4"],"str":"2. Mate rialien und Methoden","line":19,"x":68.04,"y":296.22,"width":"148.74","height":"12.00","fontName":["CRDKGT+ArialMT"],"dir":["ltr"]}
|
||||
{"page":235,"change":"ContentChange","types":["H4"],"str":"3. Ergebnisse und Diskussion","dir":"ltr","width":"158.04","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","564.24"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":564.24,"line":2}
|
||||
{"page":249,"change":"ContentChange","types":["H4"],"str":"4. Perspektiven","dir":"ltr","width":"82.68","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","564.24"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":564.24,"line":2}
|
||||
{"page":251,"change":"ContentChange","types":["H4"],"str":"5. Schlussfolgerungen","dir":"ltr","width":"118.68","height":"12.00","transform":["12.00","0.00","0.00","12.00","70.92","506.22"],"fontName":"CRDKGT+ArialMT","x":70.92,"y":506.22,"line":4}
|
@ -2,7 +2,7 @@
|
||||
"pages": 218,
|
||||
"items": 51104,
|
||||
"groupedItems": 8481,
|
||||
"changes": 2,
|
||||
"changes": 5,
|
||||
"schema": [
|
||||
{
|
||||
"name": "line"
|
||||
@ -35,4 +35,7 @@
|
||||
"globals": {}
|
||||
}
|
||||
{"page":0,"change":"ContentChange","types":["H1"],"str":"A Course in Combinatorial Optimization","dir":"ltr","width":"407.49","height":"24.79","transform":["24.79","0.00","0.00","24.79","112.60","584.96"],"fontName":"HVHZFT+CMR17","x":112.599,"y":584.959,"line":0}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Alexander Schrijver","dir":"ltr","width":"162.77","height":"20.66","transform":["20.66","0.00","0.00","20.66","234.96","508.10"],"fontName":"HVHZFT+CMR17","x":234.96300000000002,"y":508.09919999999994,"line":1}
|
||||
{"page":0,"change":"ContentChange","types":["H2"],"str":"Alexander Schrijver","dir":"ltr","width":"162.77","height":"20.66","transform":["20.66","0.00","0.00","20.66","234.96","508.10"],"fontName":"HVHZFT+CMR17","x":234.96300000000002,"y":508.09919999999994,"line":1}
|
||||
{"page":198,"change":"ContentChange","types":["H2","H3"],"str":"References","dir":"ltr","width":"90.64","height":"17.22","transform":["17.22","0.00","0.00","17.22","100.35","701.16"],"fontName":"KXBFBK+CMBX12","x":100.34999999999997,"y":701.1583,"line":1}
|
||||
{"page":209,"change":"ContentChange","types":["H2","H3"],"str":"Name index","dir":"ltr","width":"101.96","height":"17.22","transform":["17.22","0.00","0.00","17.22","233.80","685.71"],"fontName":"KXBFBK+CMBX12","x":233.80200000000002,"y":685.7142,"line":1}
|
||||
{"page":211,"change":"ContentChange","types":["H2","H3"],"str":"Subject index","dir":"ltr","width":"116.68","height":"17.22","transform":["17.22","0.00","0.00","17.22","226.44","685.71"],"fontName":"KXBFBK+CMBX12","x":226.44,"y":685.7142,"line":1}
|
@ -1,24 +0,0 @@
|
||||
import { assertDefined } from './assert';
|
||||
|
||||
enum ItemType {
|
||||
H1 = 'H1',
|
||||
H2 = 'H2',
|
||||
H3 = 'H3',
|
||||
H4 = 'H4',
|
||||
H5 = 'H5',
|
||||
H6 = 'H6',
|
||||
}
|
||||
|
||||
export default ItemType;
|
||||
|
||||
namespace ItemType {
|
||||
/**
|
||||
* @param level 1-6
|
||||
* @returns
|
||||
*/
|
||||
export function header(level: number): ItemType {
|
||||
const type = ItemType[`H${level}`];
|
||||
assertDefined(type, `No header for level '${level}' defined`);
|
||||
return type;
|
||||
}
|
||||
}
|
@ -1,11 +1,15 @@
|
||||
import Item from './Item';
|
||||
import ItemType from './ItemType';
|
||||
import { HeadlineType } from './text-types';
|
||||
|
||||
/**
|
||||
* Table of contents usually parsed by `DetectToc.ts`.
|
||||
*/
|
||||
export default class TOC {
|
||||
constructor(public tocHeadlineItems: Item[], public pages: number[], public detectedHeadlineLevels: Set<ItemType>) {}
|
||||
constructor(
|
||||
public tocHeadlineItems: Item[],
|
||||
public pages: number[],
|
||||
public detectedHeadlineLevels: Set<HeadlineType>,
|
||||
) {}
|
||||
|
||||
startPage(): number {
|
||||
return Math.min(...this.pages);
|
||||
|
@ -12,6 +12,7 @@ export default class LineItemMerger extends ItemMerger {
|
||||
|
||||
merge(evaluationTracker: EvaluationTracker, changeTracker: ChangeTracker, schema: string[], items: Item[]): Item {
|
||||
const page = items[0].page;
|
||||
const block = items[0].data['block'];
|
||||
const line = items[0].data['line'];
|
||||
const str = items.map((item) => item.data['str']).join(' ');
|
||||
const x = Math.min(...items.map((item) => item.data['x']));
|
||||
@ -23,6 +24,7 @@ export default class LineItemMerger extends ItemMerger {
|
||||
|
||||
const newItem = new Item(page, {
|
||||
str,
|
||||
block,
|
||||
line,
|
||||
x,
|
||||
y,
|
||||
|
@ -16,6 +16,24 @@ export function descending(a: number, b: number): number {
|
||||
return b - a;
|
||||
}
|
||||
|
||||
export function min(array: number[], prevMin?: number): number {
|
||||
return array.reduce((prev, curr) => {
|
||||
if (prev === undefined || curr < prev) {
|
||||
return curr;
|
||||
}
|
||||
return prev;
|
||||
}, prevMin);
|
||||
}
|
||||
|
||||
export function max(array: number[], prevMin?: number): number {
|
||||
return array.reduce((prev, curr) => {
|
||||
if (prev === undefined || curr > prev) {
|
||||
return curr;
|
||||
}
|
||||
return prev;
|
||||
}, prevMin);
|
||||
}
|
||||
|
||||
export function count<T>(array: T[], find: (entry: T) => boolean): number {
|
||||
return array.reduce((count, entry) => (find(entry) ? count + 1 : count), 0);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { TextType } from 'src/text-types';
|
||||
import { assertDefined } from '../assert';
|
||||
import Item from '../Item';
|
||||
import ItemType from '../ItemType';
|
||||
import { onlyUniques } from './groupingUtils';
|
||||
|
||||
function get(item: Item, name: string): any {
|
||||
const value = item.data[name];
|
||||
@ -28,7 +29,7 @@ export function getFontName(fontMap: Map<string, object>, item: Item): string {
|
||||
return assertDefined(fontObject['name'], `No 'name' found in ${JSON.stringify(fontObject)}`);
|
||||
}
|
||||
|
||||
export function itemWithType(item: Item, type: ItemType): Item {
|
||||
export function itemWithType(item: Item, type: TextType): Item {
|
||||
const existingTypes = item.data['types'] || [];
|
||||
return item.withDataAddition({ types: [...existingTypes, type] });
|
||||
return item.withDataAddition({ types: [...existingTypes, type].filter(onlyUniques) });
|
||||
}
|
||||
|
@ -43,3 +43,19 @@ export function extractEndingNumber(text: string): number | undefined {
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export function isListItemCharacter(string) {
|
||||
if (string.length > 1) {
|
||||
return false;
|
||||
}
|
||||
const char = string.charAt(0);
|
||||
return char === '-' || char === '•' || char === '–';
|
||||
}
|
||||
|
||||
export function isListItem(value: string) {
|
||||
return /^[\s]*[-•–][\s].*$/g.test(value);
|
||||
}
|
||||
|
||||
export function isNumberedListItem(value: string) {
|
||||
return /^[\s]*\d*\.(?:\s|$)/g.test(value);
|
||||
}
|
||||
|
38
src/text-types.ts
Normal file
38
src/text-types.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { assert } from './assert';
|
||||
|
||||
export type HeadlineType = 'H1' | 'H2' | 'H3' | 'H4' | 'H5' | 'H6';
|
||||
|
||||
export type ListType = 'LIST' | 'NUMBERED_LIST';
|
||||
|
||||
export type TextType = HeadlineType | 'TOC' | 'FOOTNOTES' | 'CODE' | ListType | 'PARAGRAPH';
|
||||
|
||||
function types(...types: TextType[]) {
|
||||
return types;
|
||||
}
|
||||
|
||||
export function isHeadline(type: TextType) {
|
||||
return types('H1', 'H2', 'H3', 'H4', 'H5', 'H6').includes(type);
|
||||
}
|
||||
|
||||
export function toHeadlineType(number: 1 | 2 | 3 | 4 | 5 | 6 | number): HeadlineType {
|
||||
assert(number > 0 && number < 7, `Expected headline level between 1 and 6 but was ${number}`);
|
||||
return `H${number.toString()}` as HeadlineType;
|
||||
}
|
||||
|
||||
export function headlineLevel(type: TextType) {
|
||||
const level = parseInt(type[1]);
|
||||
assert(level > 0 && level < 7, `Expected headline level between 1 and 6 but was ${level} (from '${type}')`);
|
||||
return level;
|
||||
}
|
||||
|
||||
export function mergeToBlock(type: TextType) {
|
||||
return types('FOOTNOTES', 'CODE', 'LIST', 'NUMBERED_LIST').includes(type);
|
||||
}
|
||||
|
||||
export function mergeFollowingNonTypedItems(type: TextType) {
|
||||
return types('FOOTNOTES').includes(type);
|
||||
}
|
||||
|
||||
export function mergeFollowingNonTypedItemsWithSmallDistance(type: TextType) {
|
||||
return types('LIST', 'NUMBERED_LIST').includes(type);
|
||||
}
|
@ -4,11 +4,11 @@ import ItemTransformer from './ItemTransformer';
|
||||
import TransformContext from './TransformContext';
|
||||
import LineItemMerger from '../debug/LineItemMerger';
|
||||
import { groupByLine, onlyUniques } from '../support/groupingUtils';
|
||||
import { MAX_HEIGHT, MOST_USED_DISTANCE, MOST_USED_FONT, MOST_USED_HEIGHT } from './CacluclateStatistics';
|
||||
import { MAX_HEIGHT, MOST_USED_HEIGHT } from './CacluclateStatistics';
|
||||
import { HEADLINE_TYPE_TO_HEIGHT_RANGE, TOC_GLOBAL } from './DetectToc';
|
||||
import ItemType from '../ItemType';
|
||||
import { flatten } from '../support/functional';
|
||||
import { itemWithType } from '../support/items';
|
||||
import { HeadlineType, TextType, isHeadline, toHeadlineType } from '../text-types';
|
||||
|
||||
const config = {
|
||||
// How much taller a text must be to be a headline (relative to mostUsedHeight)
|
||||
@ -30,13 +30,14 @@ export default class DetectHeaders extends ItemTransformer {
|
||||
transform(context: TransformContext, inputItems: Item[]): ItemResult {
|
||||
const maxHeight = context.getGlobal(MAX_HEIGHT);
|
||||
const mostUsedHeight = context.getGlobal(MOST_USED_HEIGHT);
|
||||
const mostUsedDistance = context.getGlobal(MOST_USED_DISTANCE);
|
||||
const mostUsedFont = context.getGlobal(MOST_USED_FONT);
|
||||
// const mostUsedDistance = context.getGlobal(MOST_USED_DISTANCE);
|
||||
// const mostUsedFont = context.getGlobal(MOST_USED_FONT);
|
||||
const toc = context.getGlobalOptionally(TOC_GLOBAL);
|
||||
const headlineTypeToHeightRange = context.getGlobalOptionally(HEADLINE_TYPE_TO_HEIGHT_RANGE);
|
||||
|
||||
const itemsByLine = groupByLine(inputItems);
|
||||
const itemToLevel: Map<string, ItemType> = new Map();
|
||||
const itemToLevel: Map<string, HeadlineType> = new Map();
|
||||
|
||||
|
||||
// Handle title pages: Title pages often have multiple lines of extraordinary height.
|
||||
// Starting the leveling here would already consume most of the available headline levels.
|
||||
@ -51,24 +52,19 @@ export default class DetectHeaders extends ItemTransformer {
|
||||
itemToLevel,
|
||||
);
|
||||
|
||||
const hasHeaderType = (types: ItemType[]) =>
|
||||
types.includes(ItemType.H1) ||
|
||||
types.includes(ItemType.H2) ||
|
||||
types.includes(ItemType.H3) ||
|
||||
types.includes(ItemType.H4) ||
|
||||
types.includes(ItemType.H5) ||
|
||||
types.includes(ItemType.H6);
|
||||
const hasHeaderType = (types: TextType[]) => types.find((t) => isHeadline(t));
|
||||
|
||||
if (toc && headlineTypeToHeightRange) {
|
||||
// Use existing headline heights to find additional headlines
|
||||
const headlineTypes = Object.keys(headlineTypeToHeightRange) as ItemType[];
|
||||
const headlineTypes = Object.keys(headlineTypeToHeightRange) as HeadlineType[];
|
||||
headlineTypes.forEach((headlineType) => {
|
||||
const range = headlineTypeToHeightRange[headlineType];
|
||||
if (range.max > mostUsedHeight) {
|
||||
// use only very clear headlines, only use max
|
||||
inputItems.forEach((item) => {
|
||||
const itemHeight = item.data['height'];
|
||||
const types: ItemType[] = item.data['types'] || itemToLevel.get(item.uuid) || [];
|
||||
const types: TextType[] =
|
||||
item.data['types'] || itemToLevel.has(item.uuid) ? [itemToLevel.get(item.uuid)] : [];
|
||||
const isHeader = hasHeaderType(types);
|
||||
if (!isHeader && itemHeight === range.max) {
|
||||
itemToLevel.set(item.uuid, headlineType);
|
||||
@ -89,12 +85,12 @@ export default class DetectHeaders extends ItemTransformer {
|
||||
heights.push(maxHeight);
|
||||
}
|
||||
});
|
||||
const heightToHeadline: Map<number, ItemType> = new Map();
|
||||
const heightToHeadline: Map<number, HeadlineType> = new Map();
|
||||
heights.sort((a, b) => b - a);
|
||||
heights.forEach((height, i) => {
|
||||
const headlineLevel = i + 2;
|
||||
if (headlineLevel <= 6) {
|
||||
const headlineType = ItemType.header(2 + i);
|
||||
const headlineType = toHeadlineType(2 + i);
|
||||
heightToHeadline.set(height, headlineType);
|
||||
}
|
||||
});
|
||||
@ -103,10 +99,10 @@ export default class DetectHeaders extends ItemTransformer {
|
||||
.filter((lineItems) => !itemToLevel.has(lineItems[0].uuid))
|
||||
.forEach((lineItems) => {
|
||||
const maxHeight = Math.max(...lineItems.map((item) => item.data['height']));
|
||||
const types = flatten(lineItems.map((item) => item.data['types'] || [])).filter(onlyUniques) as ItemType[];
|
||||
const types = flatten(lineItems.map((item) => item.data['types'] || [])).filter(onlyUniques) as TextType[];
|
||||
if (!hasHeaderType(types) && !itemToLevel.has(lineItems[0].uuid)) {
|
||||
const headlineType = heightToHeadline.get(maxHeight);
|
||||
if (headlineType && !types.includes(ItemType.H1) && !types.includes(ItemType.H2)) {
|
||||
if (headlineType && !types.includes('H1') && !types.includes('H2')) {
|
||||
lineItems.forEach((item) => itemToLevel.set(item.uuid, headlineType));
|
||||
detectedHeaders++;
|
||||
}
|
||||
@ -147,7 +143,7 @@ export default class DetectHeaders extends ItemTransformer {
|
||||
// }
|
||||
|
||||
return {
|
||||
items: inputItems.map((item, i) => {
|
||||
items: inputItems.map((item) => {
|
||||
const headerType = itemToLevel.get(item.uuid);
|
||||
if (headerType) {
|
||||
return itemWithType(item, headerType);
|
||||
@ -165,7 +161,7 @@ function detectTitlePageHeaders(
|
||||
maxTitlePage: number,
|
||||
mostUsedHeight: number,
|
||||
maxHeight: number,
|
||||
itemToLevel: Map<string, ItemType>,
|
||||
itemToLevel: Map<string, HeadlineType>,
|
||||
): number {
|
||||
const min2ndLevelHeaderHeigthOnMaxPage = mostUsedHeight + (maxHeight - mostUsedHeight) / 4;
|
||||
const pagesHavingMaxHeightItems = inputItems
|
||||
@ -180,9 +176,9 @@ function detectTitlePageHeaders(
|
||||
const height = Math.max(...lineItems.map((item) => item.data['height']));
|
||||
if (height > min2ndLevelHeaderHeigthOnMaxPage) {
|
||||
if (height == maxHeight) {
|
||||
lineItems.forEach((item) => itemToLevel.set(item.uuid, ItemType.H1));
|
||||
lineItems.forEach((item) => itemToLevel.set(item.uuid, 'H1'));
|
||||
} else {
|
||||
lineItems.forEach((item) => itemToLevel.set(item.uuid, ItemType.H2));
|
||||
lineItems.forEach((item) => itemToLevel.set(item.uuid, 'H2'));
|
||||
}
|
||||
detectedHeaders++;
|
||||
}
|
||||
|
@ -16,12 +16,12 @@ import {
|
||||
WHITESPACE_CHAR_CODE,
|
||||
PERIOD_CHAR_CODES,
|
||||
} from '../support/stringFunctions';
|
||||
import ItemType from '../ItemType';
|
||||
import { numbersAreConsecutive } from '../support/numberFunctions';
|
||||
import TOC from '../TOC';
|
||||
import FontType, { declaredFontTypes } from '../FontType';
|
||||
import { flatten, groupBy } from '../support/functional';
|
||||
import { getHeight, getText, getFontName, itemWithType } from '../support/items';
|
||||
import { HeadlineType, toHeadlineType } from '../text-types';
|
||||
|
||||
export interface HeadlineRange {
|
||||
min: number;
|
||||
@ -129,12 +129,12 @@ export default class DetectToc extends ItemTransformer {
|
||||
uidToLevel.set(uuid, headline.level);
|
||||
});
|
||||
return uidToLevel;
|
||||
}, new Map<string, ItemType>());
|
||||
}, new Map<string, HeadlineType>());
|
||||
|
||||
const headlineTypes = foundHeadlines.reduce((allLevels, headline) => {
|
||||
allLevels.add(headline.level);
|
||||
return allLevels;
|
||||
}, new Set<ItemType>());
|
||||
}, new Set<HeadlineType>());
|
||||
const tocHeadlineUuids = new Set(tocHeadline.map((item) => item.uuid));
|
||||
|
||||
return {
|
||||
@ -327,7 +327,7 @@ function findTocHeadline(
|
||||
return itemsGroupedByLine[itemsGroupedByLine.length - 1];
|
||||
}
|
||||
|
||||
function findTocEntryHeadlineLevels(rawTocEntries: RawTocEntry[]): ItemType[] {
|
||||
function findTocEntryHeadlineLevels(rawTocEntries: RawTocEntry[]): HeadlineType[] {
|
||||
// We focus on heights since it seems the most consistent metric to determining levels so far.
|
||||
//Other options would be looking at X-coordinates (per page), or at leading numbering (e.g. /^(\d)+.(\d)+.(\d)+/).
|
||||
const height = (entry: RawTocEntry) => Math.round(getHeight(entry.entryLines[0][0]));
|
||||
@ -335,12 +335,12 @@ function findTocEntryHeadlineLevels(rawTocEntries: RawTocEntry[]): ItemType[] {
|
||||
|
||||
// we start with H2 (H1 is reserved for the document title)
|
||||
if (allHeights.length > 3) {
|
||||
return rawTocEntries.map(() => ItemType.H2);
|
||||
return rawTocEntries.map(() => 'H2');
|
||||
}
|
||||
|
||||
return rawTocEntries.map((entry) => {
|
||||
const index = allHeights.indexOf(height(entry));
|
||||
return ItemType.header(index + 2);
|
||||
return toHeadlineType(index + 2);
|
||||
});
|
||||
}
|
||||
|
||||
@ -465,7 +465,7 @@ interface RawTocEntry {
|
||||
}
|
||||
|
||||
interface Headline {
|
||||
level: ItemType;
|
||||
level: HeadlineType;
|
||||
uuids: Set<string>;
|
||||
}
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
import ItemType from 'src/ItemType';
|
||||
|
||||
test('headers', async () => {
|
||||
expect(ItemType.header(1)).toEqual(ItemType.H1);
|
||||
expect(ItemType.header(2)).toEqual(ItemType.H2);
|
||||
expect(ItemType.header(3)).toEqual(ItemType.H3);
|
||||
expect(ItemType.header(4)).toEqual(ItemType.H4);
|
||||
expect(ItemType.header(5)).toEqual(ItemType.H5);
|
||||
expect(ItemType.header(6)).toEqual(ItemType.H6);
|
||||
|
||||
expect(() => ItemType.header(0)).toThrow("No header for level '0' defined");
|
||||
expect(() => ItemType.header(7)).toThrow("No header for level '7' defined");
|
||||
});
|
@ -9,11 +9,13 @@ import {
|
||||
flatMap,
|
||||
onlyUniques,
|
||||
count,
|
||||
min,
|
||||
max,
|
||||
} from 'src/support/groupingUtils';
|
||||
import { items } from 'test/testItems';
|
||||
|
||||
test('count', async () => {
|
||||
expect(count([], (_) => true)).toEqual(0);
|
||||
expect(count([], () => true)).toEqual(0);
|
||||
expect(count([1, 2, 3, 4, 5, 6], (e) => e % 2 == 0)).toEqual(3);
|
||||
expect(count(['A', 'B', 'c'], (e) => e === e.toUpperCase())).toEqual(2);
|
||||
});
|
||||
@ -30,6 +32,28 @@ test('onlyUniques', async () => {
|
||||
expect([1, 2, 3, 3, 2, 1].filter(onlyUniques)).toEqual([1, 2, 3]);
|
||||
});
|
||||
|
||||
test('min', async () => {
|
||||
expect(min([])).toBeUndefined();
|
||||
expect(min([1])).toEqual(1);
|
||||
expect(min([1, 2])).toEqual(1);
|
||||
expect(min([2, 1])).toEqual(1);
|
||||
expect(min([1, 4, -3, 5])).toEqual(-3);
|
||||
|
||||
expect(min([2, 3], 1)).toEqual(1);
|
||||
expect(min([2, 3], 4)).toEqual(2);
|
||||
});
|
||||
|
||||
test('max', async () => {
|
||||
expect(max([])).toBeUndefined();
|
||||
expect(max([1])).toEqual(1);
|
||||
expect(max([1, 2])).toEqual(2);
|
||||
expect(max([2, 1])).toEqual(2);
|
||||
expect(max([1, 4, -3, 5])).toEqual(5);
|
||||
|
||||
expect(max([2, 3], 1)).toEqual(3);
|
||||
expect(max([2, 3], 4)).toEqual(4);
|
||||
});
|
||||
|
||||
describe('groupByPage', () => {
|
||||
test('empty', async () => {
|
||||
expect(groupByPage([])).toEqual([]);
|
||||
|
@ -3,6 +3,8 @@ import {
|
||||
filterOutWhitespaces,
|
||||
extractNumbers,
|
||||
extractEndingNumber,
|
||||
isListItem,
|
||||
isNumberedListItem,
|
||||
} from 'src/support/stringFunctions';
|
||||
|
||||
test('filterOutDigits', async () => {
|
||||
@ -31,3 +33,45 @@ test('extractEndingNumbers', async () => {
|
||||
expect(extractEndingNumber('a12 21 304')).toEqual(304);
|
||||
expect(extractEndingNumber('abc ... 304')).toEqual(304);
|
||||
});
|
||||
|
||||
describe('functions: isListItem', () => {
|
||||
it('Match', () => {
|
||||
expect(isListItem('- my text')).toEqual(true);
|
||||
expect(isListItem('- my text -')).toEqual(true);
|
||||
expect(isListItem(' - my text')).toEqual(true);
|
||||
expect(isListItem(' - my text')).toEqual(true);
|
||||
expect(isListItem(' - my text')).toEqual(true);
|
||||
|
||||
expect(isListItem('• my text')).toEqual(true);
|
||||
expect(isListItem(' • my text')).toEqual(true);
|
||||
expect(isListItem(' • my text')).toEqual(true);
|
||||
|
||||
expect(isListItem('– my text')).toEqual(true);
|
||||
expect(isListItem(' – my text')).toEqual(true);
|
||||
});
|
||||
|
||||
it('No Match', () => {
|
||||
expect(isListItem('my text')).toEqual(false);
|
||||
expect(isListItem('-my text')).toEqual(false);
|
||||
expect(isListItem('•my text')).toEqual(false);
|
||||
expect(isListItem(' -my text')).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('functions: isNumberedListItem', () => {
|
||||
it('Match', () => {
|
||||
expect(isNumberedListItem('1.')).toEqual(true);
|
||||
expect(isNumberedListItem('1. my text')).toEqual(true);
|
||||
expect(isNumberedListItem('2. my text')).toEqual(true);
|
||||
expect(isNumberedListItem('23. my text')).toEqual(true);
|
||||
expect(isNumberedListItem('23. my text')).toEqual(true);
|
||||
expect(isNumberedListItem(' 23. my text')).toEqual(true);
|
||||
expect(isNumberedListItem(' 23. my text')).toEqual(true);
|
||||
});
|
||||
|
||||
it('No Match', () => {
|
||||
expect(isNumberedListItem('1two')).toEqual(false);
|
||||
expect(isNumberedListItem('1 two')).toEqual(false);
|
||||
expect(isNumberedListItem('1.two')).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
40
test/text-types.test.ts
Normal file
40
test/text-types.test.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { TextType, isHeadline, headlineLevel, toHeadlineType } from 'src/text-types';
|
||||
|
||||
describe('headline', () => {
|
||||
test('isHeadline', async () => {
|
||||
expect(isHeadline('H0' as TextType)).toBe(false);
|
||||
expect(isHeadline('H1')).toBe(true);
|
||||
expect(isHeadline('H2')).toBe(true);
|
||||
expect(isHeadline('H3')).toBe(true);
|
||||
expect(isHeadline('H4')).toBe(true);
|
||||
expect(isHeadline('H5')).toBe(true);
|
||||
expect(isHeadline('H6')).toBe(true);
|
||||
expect(isHeadline('H7' as TextType)).toBe(false);
|
||||
});
|
||||
|
||||
test('headlineLevel', async () => {
|
||||
expect(headlineLevel('H1')).toBe(1);
|
||||
expect(headlineLevel('H2')).toBe(2);
|
||||
expect(headlineLevel('H3')).toBe(3);
|
||||
expect(headlineLevel('H4')).toBe(4);
|
||||
expect(headlineLevel('H5')).toBe(5);
|
||||
expect(headlineLevel('H6')).toBe(6);
|
||||
expect(() => headlineLevel('H0' as TextType)).toThrow(
|
||||
Error("Expected headline level between 1 and 6 but was 0 (from 'H0')"),
|
||||
);
|
||||
expect(() => headlineLevel('H7' as TextType)).toThrow(
|
||||
Error("Expected headline level between 1 and 6 but was 7 (from 'H7')"),
|
||||
);
|
||||
});
|
||||
|
||||
test('toHeadlineType', async () => {
|
||||
expect(toHeadlineType(1)).toEqual('H1');
|
||||
expect(toHeadlineType(2)).toEqual('H2');
|
||||
expect(toHeadlineType(3)).toEqual('H3');
|
||||
expect(toHeadlineType(4)).toEqual('H4');
|
||||
expect(toHeadlineType(5)).toEqual('H5');
|
||||
expect(toHeadlineType(6)).toEqual('H6');
|
||||
expect(() => toHeadlineType(1 - 1)).toThrow(Error('Expected headline level between 1 and 6 but was 0'));
|
||||
expect(() => toHeadlineType(6 + 1)).toThrow(Error('Expected headline level between 1 and 6 but was 7'));
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user