isodoc 1.2.2 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +64 -0
  3. data/isodoc.gemspec +3 -1
  4. data/lib/isodoc-yaml/i18n-fr.yaml +1 -1
  5. data/lib/isodoc/base_style/all.css +5 -1
  6. data/lib/isodoc/base_style/metanorma_word.css +6 -0
  7. data/lib/isodoc/base_style/metanorma_word.scss +6 -0
  8. data/lib/isodoc/base_style/reset.css +5 -1
  9. data/lib/isodoc/base_style/reset.scss +6 -1
  10. data/lib/isodoc/convert.rb +1 -14
  11. data/lib/isodoc/function/blocks.rb +1 -0
  12. data/lib/isodoc/function/cleanup.rb +1 -1
  13. data/lib/isodoc/function/references.rb +4 -2
  14. data/lib/isodoc/function/section.rb +13 -1
  15. data/lib/isodoc/function/table.rb +1 -0
  16. data/lib/isodoc/function/to_word_html.rb +4 -0
  17. data/lib/isodoc/function/utils.rb +1 -1
  18. data/lib/isodoc/html_function/html.rb +1 -0
  19. data/lib/isodoc/i18n.rb +8 -50
  20. data/lib/isodoc/metadata.rb +44 -111
  21. data/lib/isodoc/metadata_contributor.rb +90 -0
  22. data/lib/isodoc/metadata_date.rb +11 -0
  23. data/lib/isodoc/presentation_function/bibdata.rb +96 -0
  24. data/lib/isodoc/presentation_function/block.rb +14 -0
  25. data/lib/isodoc/presentation_function/inline.rb +27 -14
  26. data/lib/isodoc/presentation_xml_convert.rb +4 -0
  27. data/lib/isodoc/version.rb +1 -1
  28. data/lib/isodoc/word_function/body.rb +1 -0
  29. data/lib/isodoc/word_function/postprocess.rb +2 -2
  30. data/lib/isodoc/word_function/table.rb +3 -2
  31. data/lib/isodoc/xref.rb +1 -0
  32. data/lib/isodoc/xref/xref_anchor.rb +8 -3
  33. data/lib/isodoc/xref/xref_counter.rb +21 -7
  34. data/lib/isodoc/xref/xref_gen.rb +29 -6
  35. data/lib/isodoc/xref/xref_sect_gen.rb +1 -1
  36. data/lib/isodoc/xslfo_convert.rb +6 -1
  37. data/spec/assets/i18n.yaml +16 -0
  38. data/spec/isodoc/blocks_spec.rb +330 -215
  39. data/spec/isodoc/cleanup_spec.rb +3 -1
  40. data/spec/isodoc/i18n_spec.rb +68 -16
  41. data/spec/isodoc/inline_spec.rb +47 -5
  42. data/spec/isodoc/metadata_spec.rb +69 -19
  43. data/spec/isodoc/postproc_spec.rb +39 -3
  44. data/spec/isodoc/ref_spec.rb +3 -3
  45. data/spec/isodoc/section_spec.rb +134 -10
  46. data/spec/isodoc/table_spec.rb +306 -207
  47. data/spec/isodoc/terms_spec.rb +1 -1
  48. data/spec/isodoc/xref_spec.rb +46 -18
  49. data/spec/spec_helper.rb +6 -0
  50. metadata +35 -7
  51. data/.github/workflows/macos.yml +0 -42
  52. data/.github/workflows/ubuntu.yml +0 -62
  53. data/.github/workflows/windows.yml +0 -44
@@ -846,6 +846,14 @@ TOCLEVEL
846
846
  <formula id="_5fc1ef0f-75d2-4b54-802c-b1bad4a53b62">
847
847
  <stem type="AsciiMath">D1</stem>
848
848
  </formula>
849
+ <dl id="_f8fb7ed7-7874-44a8-933f-06e0e86fb264">
850
+ <dt>
851
+ <em>n</em>
852
+ </dt>
853
+ <dd>
854
+ <p id="_a27281a4-b20e-4d0b-a780-bab9e851b03e">is the number of coating layers</p>
855
+ </dd>
856
+ </dl>
849
857
  </ul></li>
850
858
  </ol>
851
859
  </foreword></preface>
@@ -901,6 +909,23 @@ TOCLEVEL
901
909
  </div>
902
910
  </div>
903
911
  </div>
912
+ <div class='ListContLevel2'>
913
+ <table class='dl'>
914
+ <tr>
915
+ <td valign='top' align='left'>
916
+ <p align='left' style='margin-left:0pt;text-align:left;' class='MsoNormal'>
917
+ <i>n</i>
918
+ </p>
919
+ </td>
920
+ <td valign='top'>
921
+ <p class='MsoNormal'>
922
+ <a name='_a27281a4-b20e-4d0b-a780-bab9e851b03e' id='_a27281a4-b20e-4d0b-a780-bab9e851b03e'/>
923
+ is the number of coating layers
924
+ </p>
925
+ </td>
926
+ </tr>
927
+ </table>
928
+ </div>
904
929
  </p>
905
930
  </div>
906
931
  <p class='MsoNormal'>&#xA0;</p>
@@ -1062,9 +1087,20 @@ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="
1062
1087
  <thead>
1063
1088
  <tr>
1064
1089
  <td rowspan="2" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">
1065
- <p class="MsoNormal"><a name="_c47d9b39-adb2-431d-9320-78cb148fdb56" id="_c47d9b39-adb2-431d-9320-78cb148fdb56"></a>Output wavelength <span class="stem"><m:oMath>
1066
- <m:r><m:t>(&#x3BC;m)</m:t></m:r>
1067
- </m:oMath>
1090
+ <p class="MsoNormal"><a name="_c47d9b39-adb2-431d-9320-78cb148fdb56" id="_c47d9b39-adb2-431d-9320-78cb148fdb56"></a>Output wavelength <span class="stem">
1091
+ <m:oMath>
1092
+ <span style='font-style:normal;'>
1093
+ <m:r>
1094
+ <m:rPr>
1095
+ <m:sty m:val='p'/>
1096
+ </m:rPr>
1097
+ <m:t>(</m:t>
1098
+ </m:r>
1099
+ </span>
1100
+ <m:r>
1101
+ <m:t>&#x3BC;m)</m:t>
1102
+ </m:r>
1103
+ </m:oMath>
1068
1104
  </span></p>
1069
1105
  </td>
1070
1106
  <th colspan="3" align="left" style="font-weight:bold;border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Predictive wavelengths</th>
@@ -125,9 +125,9 @@ RSpec.describe IsoDoc do
125
125
  </iso-standard>
126
126
  INPUT
127
127
  presxml = <<~PRESXML
128
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
128
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
129
129
  <bibdata>
130
- <language>en</language>
130
+ <language current="true">en</language>
131
131
  </bibdata>
132
132
  <preface>
133
133
  <foreword>
@@ -420,7 +420,7 @@ RSpec.describe IsoDoc do
420
420
  </html>
421
421
 
422
422
  OUTPUT
423
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
423
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(presxml)
424
424
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
425
425
  end
426
426
 
@@ -1,6 +1,131 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
+ it "processes prefatory blocks" do
5
+ input = <<~INPUT
6
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
7
+ <preface>
8
+ <abstract id="A"><title>abstract</title></abstract>
9
+ <introduction id="B"><title>introduction</title></introduction>
10
+ <note id="C">note</note>
11
+ </preface>
12
+ <sections>
13
+ <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
14
+ <title>Introduction</title>
15
+ </clause>
16
+ <clause id="O" inline-header="true" obligation="normative">
17
+ <title>Clause 4.2</title>
18
+ </clause></clause>
19
+ <admonition id="L" type="caution"><p>admonition</p></admonition>
20
+ </sections>
21
+ </iso-standard>
22
+ INPUT
23
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
24
+ <html lang='en'>
25
+ <head/>
26
+ <body lang='en'>
27
+ <div class='title-section'>
28
+ <p>&#160;</p>
29
+ </div>
30
+ <br/>
31
+ <div class='prefatory-section'>
32
+ <p>&#160;</p>
33
+ </div>
34
+ <br/>
35
+ <div class='main-section'>
36
+ <div id='C' class='Note'>note</div>
37
+ <br/>
38
+ <div id='A'>
39
+ <h1 class='AbstractTitle'>abstract</h1>
40
+ </div>
41
+ <br/>
42
+ <div class='Section3' id='B'>
43
+ <h1 class='IntroTitle'>introduction</h1>
44
+ </div>
45
+ <p class='zzSTDTitle1'/>
46
+ <div id='L' class='Admonition'>
47
+ <p class='AdmonitionTitle' style='text-align:center;'>CAUTION</p>
48
+ <p>admonition</p>
49
+ </div>
50
+ <div id='M'>
51
+ <h1>Clause 4</h1>
52
+ <div id='N'>
53
+ <h2>Introduction</h2>
54
+ </div>
55
+ <div id='O'>
56
+ <span class='zzMoveToFollowing'>
57
+ <b>Clause 4.2&#160; </b>
58
+ </span>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </body>
63
+ </html>
64
+ OUTPUT
65
+ expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
66
+ <html xmlns:epub='http://www.idpf.org/2007/ops' lang='en'>
67
+ <head>
68
+ <style>
69
+ </style>
70
+ </head>
71
+ <body lang='EN-US' link='blue' vlink='#954F72'>
72
+ <div class='WordSection1'>
73
+ <p>&#160;</p>
74
+ </div>
75
+ <p>
76
+ <br clear='all' class='section'/>
77
+ </p>
78
+ <div class='WordSection2'>
79
+ <div id='C' class='Note'>
80
+ <p class='Note'>
81
+ <span class='note_label'/>
82
+ <span style='mso-tab-count:1'>&#160; </span>
83
+ </p>
84
+ note
85
+ </div>
86
+ <p>
87
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
88
+ </p>
89
+ <div id='A'>
90
+ <h1 class='AbstractTitle'>abstract</h1>
91
+ </div>
92
+ <p>
93
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
94
+ </p>
95
+ <div class='Section3' id='B'>
96
+ <h1 class='IntroTitle'>introduction</h1>
97
+ </div>
98
+ <p>&#160;</p>
99
+ </div>
100
+ <p>
101
+ <br clear='all' class='section'/>
102
+ </p>
103
+ <div class='WordSection3'>
104
+ <p class='zzSTDTitle1'/>
105
+ <div id='L' class='Admonition'>
106
+ <p class='AdmonitionTitle' style='text-align:center;'>CAUTION</p>
107
+ <p>admonition</p>
108
+ </div>
109
+ <div id='M'>
110
+ <h1>Clause 4</h1>
111
+ <div id='N'>
112
+ <h2>Introduction</h2>
113
+ </div>
114
+ <div id='O'>
115
+ <span class='zzMoveToFollowing'>
116
+ <b>
117
+ Clause 4.2
118
+ <span style='mso-tab-count:1'>&#160; </span>
119
+ </b>
120
+ </span>
121
+ </div>
122
+ </div>
123
+ </div>
124
+ </body>
125
+ </html>
126
+ OUTPUT
127
+ end
128
+
4
129
  it "processes document with no content" do
5
130
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
6
131
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -135,7 +260,7 @@ RSpec.describe IsoDoc do
135
260
  INPUT
136
261
 
137
262
  presxml = <<~"PRESXML"
138
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
263
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
139
264
  <boilerplate>
140
265
  <copyright-statement>
141
266
  <clause>
@@ -630,7 +755,7 @@ OUTPUT
630
755
  </iso-standard>
631
756
  INPUT
632
757
  <?xml version='1.0'?>
633
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
758
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
634
759
  <preface>
635
760
  <foreword obligation='informative'>
636
761
  <title>Foreword</title>
@@ -724,7 +849,7 @@ OUTPUT
724
849
  </iso-standard>
725
850
  INPUT
726
851
  <?xml version='1.0'?>
727
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
852
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
728
853
  <preface>
729
854
  <introduction id='B' obligation='informative'>
730
855
  <title>Introduction</title>
@@ -751,7 +876,7 @@ OUTPUT
751
876
  INPUT
752
877
 
753
878
  presxml = <<~"OUTPUT"
754
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
879
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
755
880
  <sections>
756
881
  <terms id='H' obligation='normative'>
757
882
  <title depth='1'>1.<tab/>Terms, Definitions, Symbols and Abbreviated Terms</title>
@@ -796,7 +921,7 @@ OUTPUT
796
921
  INPUT
797
922
 
798
923
  presxml = <<~"PRESXML"
799
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
924
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
800
925
  <sections>
801
926
  <clause id='M' inline-header='false' obligation='normative'>
802
927
  <title depth='1'>1.<tab/>Clause 4</title>
@@ -848,7 +973,7 @@ OUTPUT
848
973
  </iso-standard>
849
974
  INPUT
850
975
  <?xml version='1.0'?>
851
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
976
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
852
977
  <sections>
853
978
  <clause id='M' inline-header='false' obligation='normative'>
854
979
  <title depth="1">Clause 4</title>
@@ -866,7 +991,7 @@ OUTPUT
866
991
 
867
992
  it "processes sections without titles" do
868
993
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
869
- <iso-standard xmlns="http://riboseinc.com/isoxml">
994
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
870
995
  <preface>
871
996
  <introduction id="M" inline-header="false" obligation="normative"><clause id="N" inline-header="false" obligation="normative">
872
997
  <title>Intro</title>
@@ -884,7 +1009,7 @@ OUTPUT
884
1009
  </iso-standard>
885
1010
  INPUT
886
1011
  <?xml version='1.0'?>
887
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
1012
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
888
1013
  <preface>
889
1014
  <introduction id='M' inline-header='false' obligation='normative'>
890
1015
  <clause id='N' inline-header='false' obligation='normative'>
@@ -934,7 +1059,7 @@ OUTPUT
934
1059
  </iso-standard>
935
1060
  INPUT
936
1061
  presxml = <<~OUTPUT
937
- <iso-standard xmlns="http://riboseinc.com/isoxml">
1062
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
938
1063
  <bibliography>
939
1064
  <clause id="D" obligation="informative">
940
1065
  <title depth="1">Bibliography</title>
@@ -989,5 +1114,4 @@ OUTPUT
989
1114
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
990
1115
  end
991
1116
 
992
-
993
1117
  end
@@ -1,8 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
- it "processes IsoXML tables (Presentation XML)" do
5
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
4
+ it "processes IsoXML tables" do
5
+ input = <<~INPUT
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <preface>
8
8
  <foreword>
@@ -14,11 +14,11 @@ RSpec.describe IsoDoc do
14
14
  <td colspan="4" align="center">Rice sample</td>
15
15
  </tr>
16
16
  <tr>
17
- <td align="left">Arborio</td>
18
- <td align="center">Drago<fn reference="a">
17
+ <td valign="top" align="left">Arborio</td>
18
+ <td valign="middle" align="center">Drago<fn reference="a">
19
19
  <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
20
20
  </fn></td>
21
- <td align="center">Balilla<fn reference="a">
21
+ <td valign="bottom" align="center">Balilla<fn reference="a">
22
22
  <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
23
23
  </fn></td>
24
24
  <td align="center">Thaibonnet</td>
@@ -53,7 +53,7 @@ RSpec.describe IsoDoc do
53
53
  <dt>Drago</dt>
54
54
  <dd>A type of rice</dd>
55
55
  </dl>
56
- <note><name>NOTE</name><p>This is a table about rice</p></note>
56
+ <note><p>This is a table about rice</p></note>
57
57
  </table>
58
58
 
59
59
  <table id="tableD-2" unnumbered="true">
@@ -63,8 +63,9 @@ RSpec.describe IsoDoc do
63
63
  </preface>
64
64
  </iso-standard>
65
65
  INPUT
66
- <?xml version='1.0'?>
67
- <iso-standard xmlns='http://riboseinc.com/isoxml'>
66
+
67
+ presxml = <<~OUTPUT
68
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
68
69
  <preface>
69
70
  <foreword>
70
71
  <table id='tableD-1' alt='tool tip' summary='long desc' width='70%' keep-with-next='true' keep-lines-together='true'>
@@ -82,14 +83,14 @@ RSpec.describe IsoDoc do
82
83
  <td colspan='4' align='center'>Rice sample</td>
83
84
  </tr>
84
85
  <tr>
85
- <td align='left'>Arborio</td>
86
- <td align='center'>
86
+ <td valign="top" align='left'>Arborio</td>
87
+ <td valign="middle" align='center'>
87
88
  Drago
88
89
  <fn reference='a'>
89
90
  <p id='_0fe65e9a-5531-408e-8295-eeff35f41a55'>Parboiled rice.</p>
90
91
  </fn>
91
92
  </td>
92
- <td align='center'>
93
+ <td valign="bottom" align='center'>
93
94
  Balilla
94
95
  <fn reference='a'>
95
96
  <p id='_0fe65e9a-5531-408e-8295-eeff35f41a55'>Parboiled rice.</p>
@@ -134,7 +135,7 @@ RSpec.describe IsoDoc do
134
135
  <dd>A type of rice</dd>
135
136
  </dl>
136
137
  <note>
137
- <name>NOTENOTE</name>
138
+ <name>NOTE</name>
138
139
  <p>This is a table about rice</p>
139
140
  </note>
140
141
  </table>
@@ -149,70 +150,8 @@ RSpec.describe IsoDoc do
149
150
  </preface>
150
151
  </iso-standard>
151
152
  OUTPUT
152
- end
153
153
 
154
- it "processes IsoXML tables" do
155
- expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
156
- <iso-standard xmlns="http://riboseinc.com/isoxml">
157
- <preface>
158
- <foreword>
159
- <table id="tableD-1" alt="tool tip" summary="long desc" width="70%" keep-with-next="true" keep-lines-together="true">
160
- <name>Table 1&#xA0;&#x2014; Repeatability and reproducibility of <em>husked</em> rice yield<fn reference="1"><p>X</p></fn></name>
161
- <thead>
162
- <tr>
163
- <td rowspan="2" align="left">Description</td>
164
- <td colspan="4" align="center">Rice sample</td>
165
- </tr>
166
- <tr>
167
- <td align="left">Arborio</td>
168
- <td align="center">Drago<fn reference="a">
169
- <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
170
- </fn></td>
171
- <td align="center">Balilla<fn reference="a">
172
- <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
173
- </fn></td>
174
- <td align="center">Thaibonnet</td>
175
- </tr>
176
- </thead>
177
- <tbody>
178
- <tr>
179
- <th align="left">Number of laboratories retained after eliminating outliers</th>
180
- <td align="center">13</td>
181
- <td align="center">11</td>
182
- <td align="center">13</td>
183
- <td align="center">13</td>
184
- </tr>
185
- <tr>
186
- <td align="left">Mean value, g/100 g</td>
187
- <td align="center">81,2</td>
188
- <td align="center">82,0</td>
189
- <td align="center">81,8</td>
190
- <td align="center">77,7</td>
191
- </tr>
192
- </tbody>
193
- <tfoot>
194
- <tr>
195
- <td align="left">Reproducibility limit, <stem type="AsciiMath">R</stem> (= 2,83 <stem type="AsciiMath">s_R</stem>)</td>
196
- <td align="center">2,89</td>
197
- <td align="center">0,57</td>
198
- <td align="center">2,26</td>
199
- <td align="center">6,06</td>
200
- </tr>
201
- </tfoot>
202
- <dl>
203
- <dt>Drago</dt>
204
- <dd>A type of rice</dd>
205
- </dl>
206
- <note><name>NOTE</name><p>This is a table about rice</p></note>
207
- </table>
208
-
209
- <table id="tableD-2" unnumbered="true">
210
- <tbody><tr><td>A</td></tr></tbody>
211
- </table>
212
- </foreword>
213
- </preface>
214
- </iso-standard>
215
- INPUT
154
+ html = <<~OUTPUT
216
155
  #{HTML_HDR}
217
156
  <br/>
218
157
  <div>
@@ -232,11 +171,11 @@ OUTPUT
232
171
  <td colspan="4" style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;" scope="colgroup">Rice sample</td>
233
172
  </tr>
234
173
  <tr>
235
- <td style="text-align:left;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Arborio</td>
236
- <td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside class="footnote"><div id="fn:tableD-1a"><span><span id="tableD-1a" class="TableFootnoteRef">a</span>&#160; </span>
174
+ <td style="text-align:left;vertical-align:top;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Arborio</td>
175
+ <td style="text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside class="footnote"><div id="fn:tableD-1a"><span><span id="tableD-1a" class="TableFootnoteRef">a</span>&#160; </span>
237
176
  <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
238
177
  </div></aside></td>
239
- <td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
178
+ <td style="text-align:center;vertical-align:bottom;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
240
179
  <td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Thaibonnet</td>
241
180
  </tr>
242
181
  </thead>
@@ -291,164 +230,324 @@ OUTPUT
291
230
  </body>
292
231
  </html>
293
232
  OUTPUT
294
- end
295
233
 
296
- it "processes IsoXML tables (Word)" do
297
- expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true).gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
298
- <iso-standard xmlns="http://riboseinc.com/isoxml">
299
- <preface>
300
- <foreword>
301
- <table id="tableD-0">
302
- <name>Table 1</name>
303
- <tbody><tr><td>A</td></tr></tbody>
304
- </table>
305
- <table id="tableD-1" alt="tool tip" summary="long desc" width="70%">
306
- <name>Table 2&#xA0;&#x2014; Repeatability and reproducibility of husked rice yield<fn reference="1"><p>X</p></fn></name>
307
- <thead>
308
- <tr>
309
- <td rowspan="2" align="left">Description</td>
310
- <td colspan="4" align="center">Rice sample</td>
311
- </tr>
312
- <tr>
313
- <td align="left">Arborio</td>
314
- <td align="center">Drago<fn reference="a">
315
- <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
316
- </fn></td>
317
- <td align="center">Balilla<fn reference="a">
318
- <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
319
- </fn></td>
320
- <td align="center">Thaibonnet</td>
321
- </tr>
322
- </thead>
323
- <tbody>
324
- <tr>
325
- <td align="left">Number of laboratories retained after eliminating outliers</td>
326
- <td align="center">13</td>
327
- <td align="center">11</td>
328
- <td align="center">13</td>
329
- <td align="center">13</td>
330
- </tr>
331
- <tr>
332
- <td align="left">Mean value, g/100 g</td>
333
- <td align="center">81,2</td>
334
- <td align="center">82,0</td>
335
- <td align="center">81,8</td>
336
- <td align="center">77,7</td>
337
- </tr>
338
- </tbody>
339
- <tfoot>
340
- <tr>
341
- <td align="left">Reproducibility limit, <stem type="AsciiMath">R</stem> (= 2,83 <stem type="AsciiMath">s_R</stem>)</td>
342
- <td align="center">2,89</td>
343
- <td align="center">0,57</td>
344
- <td align="center">2,26</td>
345
- <td align="center">6,06</td>
346
- </tr>
347
- </tfoot>
348
- <dl>
349
- <dt>Drago</dt>
350
- <dd>A type of rice</dd>
351
- </dl>
352
- <note><name>NOTE</name><p>This is a table about rice</p></note>
353
- </table>
354
- </foreword>
355
- </preface>
356
- </iso-standard>
357
- INPUT
234
+ word = <<~OUTPUT
358
235
  <html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
359
236
  <head><style/></head>
360
- <body lang="EN-US" link="blue" vlink="#954F72">
361
- <div class="WordSection1">
362
- <p>&#160;</p>
363
- </div>
364
- <p><br clear="all" class="section"/></p>
365
- <div class="WordSection2">
366
- <p><br clear="all" style="mso-special-character:line-break;page-break-before:always"/></p>
367
- <div>
368
- <h1 class="ForewordTitle">Foreword</h1>
369
- <p class="TableTitle" style="text-align:center;">Table 1</p>
370
- <div align="center" class="table_container">
371
- <table id="tableD-0" class="MsoISOTable" style="mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;">
372
- <tbody>
373
- <tr>
374
- <td style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">A</td>
375
- </tr>
376
- </tbody>
377
- </table>
378
- </div>
379
- <p class="TableTitle" style="text-align:center;">Table 2&#160;&#8212; Repeatability and reproducibility of husked rice yield
237
+ <body lang='EN-US' link='blue' vlink='#954F72'>
238
+ <div class='WordSection1'>
239
+ <p>&#160;</p>
240
+ </div>
241
+ <p>
242
+ <br clear='all' class='section'/>
243
+ </p>
244
+ <div class='WordSection2'>
245
+ <p>
246
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
247
+ </p>
248
+ <div>
249
+ <h1 class='ForewordTitle'>Foreword</h1>
250
+ <p class='TableTitle' style='text-align:center;'>
251
+ Table 1&#160;&#8212; Repeatability and reproducibility of
252
+ <i>husked</i>
253
+ rice yield
380
254
  <span style='mso-bookmark:_Ref'>
381
- <a href='#ftn1' epub:type='footnote' class='FootnoteRef'>
382
- <sup>1</sup>
383
- </a>
384
- </span>
385
- </p>
386
- <div align="center" class="table_container">
387
- <table id="tableD-1" class="MsoISOTable" style="mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;" title="tool tip" summary="long desc" width="70%">
255
+ <a class='FootnoteRef' href='#ftn1' epub:type='footnote'>
256
+ <sup>1</sup>
257
+ </a>
258
+ </span>
259
+ </p>
260
+ <div align='center' class='table_container'>
261
+ <table id='tableD-1' class='MsoISOTable' style='mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;page-break-after: avoid;page-break-inside: avoid;' title='tool tip' summary='long desc' width='70%'>
388
262
  <thead>
389
263
  <tr>
390
- <td rowspan="2" align="left" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Description</td>
391
- <td colspan="4" align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">Rice sample</td>
264
+ <td rowspan='2' align='left' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>Description</td>
265
+ <td colspan='4' align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>Rice sample</td>
392
266
  </tr>
393
267
  <tr>
394
- <td align="left" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Arborio</td>
395
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside><div id="ftntableD-1a"><span><span id="tableD-1a" class="TableFootnoteRef">a</span><span style="mso-tab-count:1">&#160; </span></span>
396
- <p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
397
- </div></aside></td>
398
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
399
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Thaibonnet</td>
268
+ <td align='left' valign="top" style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>Arborio</td>
269
+ <td align='center' valign="middle" style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>
270
+ Drago
271
+ <a href='#tableD-1a' class='TableFootnoteRef'>a</a>
272
+ <aside>
273
+ <div id='ftntableD-1a'>
274
+ <span>
275
+ <span id='tableD-1a' class='TableFootnoteRef'>a</span>
276
+ <span style='mso-tab-count:1'>&#160; </span>
277
+ </span>
278
+ <p id='_0fe65e9a-5531-408e-8295-eeff35f41a55'>Parboiled rice.</p>
279
+ </div>
280
+ </aside>
281
+ </td>
282
+ <td align='center' valign="bottom" style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>
283
+ Balilla
284
+ <a href='#tableD-1a' class='TableFootnoteRef'>a</a>
285
+ </td>
286
+ <td align='center' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>Thaibonnet</td>
400
287
  </tr>
401
288
  </thead>
402
289
  <tbody>
403
290
  <tr>
404
- <td align="left" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">Number of laboratories retained after eliminating outliers</td>
405
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">13</td>
406
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">11</td>
407
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">13</td>
408
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">13</td>
291
+ <th align='left' style='font-weight:bold;border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>Number of laboratories retained after eliminating outliers</th>
292
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>13</td>
293
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>11</td>
294
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>13</td>
295
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>13</td>
409
296
  </tr>
410
297
  <tr>
411
- <td align="left" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Mean value, g/100 g</td>
412
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">81,2</td>
413
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">82,0</td>
414
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">81,8</td>
415
- <td align="center" style="border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">77,7</td>
298
+ <td align='left' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>Mean value, g/100 g</td>
299
+ <td align='center' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>81,2</td>
300
+ <td align='center' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>82,0</td>
301
+ <td align='center' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>81,8</td>
302
+ <td align='center' style='border-top:none;mso-border-top-alt:none;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>77,7</td>
416
303
  </tr>
417
304
  </tbody>
418
305
  <tfoot>
419
306
  <tr>
420
- <td align="left" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Reproducibility limit, <span class="stem">(#(R)#)</span> (= 2,83 <span class="stem">(#(s_R)#)</span>)</td>
421
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">2,89</td>
422
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">0,57</td>
423
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">2,26</td>
424
- <td align="center" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">6,06</td>
307
+ <td align='left' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>
308
+ Reproducibility limit,
309
+ <span class='stem'>(#(R)#)</span>
310
+ (= 2,83
311
+ <span class='stem'>(#(s_R)#)</span>
312
+ )
313
+ </td>
314
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>2,89</td>
315
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>0,57</td>
316
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>2,26</td>
317
+ <td align='center' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>6,06</td>
425
318
  </tr>
426
319
  </tfoot>
427
- <table class="dl">
320
+ <table class='dl'>
428
321
  <tr>
429
- <td valign="top" align="left">
430
- <p align="left" style="margin-left:0pt;text-align:left;">Drago</p>
322
+ <td valign='top' align='left'>
323
+ <p align='left' style='margin-left:0pt;text-align:left;'>Drago</p>
431
324
  </td>
432
- <td valign="top">A type of rice</td>
325
+ <td valign='top'>A type of rice</td>
433
326
  </tr>
434
327
  </table>
435
- <div class="Note">
436
- <p class="Note"><span class="note_label">NOTE</span><span style="mso-tab-count:1">&#160; </span>This is a table about rice</p>
328
+ <div class='Note'>
329
+ <p class='Note'>
330
+ <span class='note_label'>NOTE</span>
331
+ <span style='mso-tab-count:1'>&#160; </span>
332
+ This is a table about rice
333
+ </p>
437
334
  </div>
438
335
  </table>
439
- </div>
440
336
  </div>
441
- <p>&#160;</p>
442
- </div>
443
- <p><br clear="all" class="section"/></p>
444
- <div class="WordSection3">
445
- <p class="zzSTDTitle1"/>
446
- <aside id='ftn1'>
447
- <p>X</p>
448
- </aside>
337
+ <div align='center' class='table_container'>
338
+ <table id='tableD-2' class='MsoISOTable' style='mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;'>
339
+ <tbody>
340
+ <tr>
341
+ <td style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>A</td>
342
+ </tr>
343
+ </tbody>
344
+ </table>
345
+ </div>
449
346
  </div>
450
- </body>
347
+ <p>&#160;</p>
348
+ </div>
349
+ <p>
350
+ <br clear='all' class='section'/>
351
+ </p>
352
+ <div class='WordSection3'>
353
+ <p class='zzSTDTitle1'/>
354
+ <aside id='ftn1'>
355
+ <p>X</p>
356
+ </aside>
357
+ </div>
358
+ </body>
451
359
  </html>
452
360
  OUTPUT
361
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
362
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
363
+ expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", presxml, true).gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref"))).to be_equivalent_to xmlpp(word)
453
364
  end
365
+
366
+ it "processes big tables" do
367
+ expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~INPUT, true).gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref"))).to be_equivalent_to xmlpp(<<~OUTPUT)
368
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
369
+ <preface>
370
+ <foreword>
371
+ <table id="tableD-1" alt="tool tip" summary="long desc" width="70%" keep-with-next="true" keep-lines-together="true">
372
+ <name>Repeatability and reproducibility of <em>husked</em> rice yield<fn reference="1"><p>X</p></fn></name>
373
+ <thead>
374
+ <tr>
375
+ <td>
376
+ Description Description Description Description Description Description Description Description Description
377
+ Description Description Description Description Description Description Description Description Description
378
+ Description Description Description Description Description Description Description Description Description
379
+ Description Description Description Description Description Description Description Description Description
380
+ Description Description Description Description Description Description Description Description Description
381
+ Description Description Description Description Description Description Description Description Description
382
+ Description Description Description Description Description Description Description Description Description
383
+ Description Description Description Description Description Description Description Description Description
384
+ Description Description Description Description Description Description Description Description Description
385
+ Description Description Description Description Description Description Description Description Description
386
+ Description Description Description Description Description Description Description Description Description
387
+ Description Description Description Description Description Description Description Description Description
388
+ Description Description Description Description Description Description Description Description Description
389
+ Description Description Description Description Description Description Description Description Description
390
+ Description Description Description Description Description Description Description Description Description
391
+ Description Description Description Description Description Description Description Description Description
392
+ Description Description Description Description Description Description Description Description Description
393
+ Description Description Description Description Description Description Description Description Description
394
+ Description Description Description Description Description Description Description Description Description
395
+ Description Description Description Description Description Description Description Description Description
396
+ Description Description Description Description Description Description Description Description Description
397
+ Description Description Description Description Description Description Description Description Description
398
+ Description Description Description Description Description Description Description Description Description
399
+ Description Description Description Description Description Description Description Description Description
400
+ Description Description Description Description Description Description Description Description Description
401
+ Description Description Description Description Description Description Description Description Description
402
+ Description Description Description Description Description Description Description Description Description
403
+ Description Description Description Description Description Description Description Description Description
404
+ Description Description Description Description Description Description Description Description Description
405
+ Description Description Description Description Description Description Description Description Description
406
+ Description Description Description Description Description Description Description Description Description
407
+ Description Description Description Description Description Description Description Description Description
408
+ Description Description Description Description Description Description Description Description Description
409
+ Description Description Description Description Description Description Description Description Description
410
+ Description Description Description Description Description Description Description Description Description
411
+ Description Description Description Description Description Description Description Description Description
412
+ Description Description Description Description Description Description Description Description Description
413
+ Description Description Description Description Description Description Description Description Description
414
+ Description Description Description Description Description Description Description Description Description
415
+ Description Description Description Description Description Description Description Description Description
416
+ </td>
417
+ <td>Rice sample</td>
418
+ </tr>
419
+ </thead>
420
+ </table>
421
+ </foreword>
422
+ </preface>
423
+ </iso-standard>
424
+ INPUT
425
+ <html xmlns:epub='http://www.idpf.org/2007/ops' lang='en'>
426
+ <head>
427
+ <style>
428
+ </style>
429
+ </head>
430
+ <body lang='EN-US' link='blue' vlink='#954F72'>
431
+ <div class='WordSection1'>
432
+ <p>&#160;</p>
433
+ </div>
434
+ <p>
435
+ <br clear='all' class='section'/>
436
+ </p>
437
+ <div class='WordSection2'>
438
+ <p>
439
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
440
+ </p>
441
+ <div>
442
+ <h1 class='ForewordTitle'>Foreword</h1>
443
+ <p class='TableTitle' style='text-align:center;'>
444
+ Repeatability and reproducibility of
445
+ <i>husked</i>
446
+ rice yield
447
+ <span style='mso-bookmark:_Ref'>
448
+ <a class='FootnoteRef' href='#ftn1' epub:type='footnote'>
449
+ <sup>1</sup>
450
+ </a>
451
+ </span>
452
+ </p>
453
+ <div align='center' class='table_container'>
454
+ <table id='tableD-1' class='MsoISOTableBig' style='mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;page-break-after: avoid;page-break-inside: avoid;' title='tool tip' summary='long desc' width='70%'>
455
+ <thead>
456
+ <tr>
457
+ <td style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>
458
+ Description Description Description Description Description
459
+ Description Description Description Description Description
460
+ Description Description Description Description Description
461
+ Description Description Description Description Description
462
+ Description Description Description Description Description
463
+ Description Description Description Description Description
464
+ Description Description Description Description Description
465
+ Description Description Description Description Description
466
+ Description Description Description Description Description
467
+ Description Description Description Description Description
468
+ Description Description Description Description Description
469
+ Description Description Description Description Description
470
+ Description Description Description Description Description
471
+ Description Description Description Description Description
472
+ Description Description Description Description Description
473
+ Description Description Description Description Description
474
+ Description Description Description Description Description
475
+ Description Description Description Description Description
476
+ Description Description Description Description Description
477
+ Description Description Description Description Description
478
+ Description Description Description Description Description
479
+ Description Description Description Description Description
480
+ Description Description Description Description Description
481
+ Description Description Description Description Description
482
+ Description Description Description Description Description
483
+ Description Description Description Description Description
484
+ Description Description Description Description Description
485
+ Description Description Description Description Description
486
+ Description Description Description Description Description
487
+ Description Description Description Description Description
488
+ Description Description Description Description Description
489
+ Description Description Description Description Description
490
+ Description Description Description Description Description
491
+ Description Description Description Description Description
492
+ Description Description Description Description Description
493
+ Description Description Description Description Description
494
+ Description Description Description Description Description
495
+ Description Description Description Description Description
496
+ Description Description Description Description Description
497
+ Description Description Description Description Description
498
+ Description Description Description Description Description
499
+ Description Description Description Description Description
500
+ Description Description Description Description Description
501
+ Description Description Description Description Description
502
+ Description Description Description Description Description
503
+ Description Description Description Description Description
504
+ Description Description Description Description Description
505
+ Description Description Description Description Description
506
+ Description Description Description Description Description
507
+ Description Description Description Description Description
508
+ Description Description Description Description Description
509
+ Description Description Description Description Description
510
+ Description Description Description Description Description
511
+ Description Description Description Description Description
512
+ Description Description Description Description Description
513
+ Description Description Description Description Description
514
+ Description Description Description Description Description
515
+ Description Description Description Description Description
516
+ Description Description Description Description Description
517
+ Description Description Description Description Description
518
+ Description Description Description Description Description
519
+ Description Description Description Description Description
520
+ Description Description Description Description Description
521
+ Description Description Description Description Description
522
+ Description Description Description Description Description
523
+ Description Description Description Description Description
524
+ Description Description Description Description Description
525
+ Description Description Description Description Description
526
+ Description Description Description Description Description
527
+ Description Description Description Description Description
528
+ Description Description Description Description Description
529
+ Description Description Description Description Description
530
+ </td>
531
+ <td style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>Rice sample</td>
532
+ </tr>
533
+ </thead>
534
+ </table>
535
+ </div>
536
+ </div>
537
+ <p>&#160;</p>
538
+ </div>
539
+ <p>
540
+ <br clear='all' class='section'/>
541
+ </p>
542
+ <div class='WordSection3'>
543
+ <p class='zzSTDTitle1'/>
544
+ <aside id='ftn1'>
545
+ <p>X</p>
546
+ </aside>
547
+ </div>
548
+ </body>
549
+ </html>
550
+ OUTPUT
551
+ end
552
+
454
553
  end