isodoc 1.2.8 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +15 -1
  3. data/isodoc.gemspec +1 -1
  4. data/lib/isodoc-yaml/i18n-en.yaml +55 -0
  5. data/lib/isodoc-yaml/i18n-fr.yaml +56 -0
  6. data/lib/isodoc/base_style/blocks.scss +2 -2
  7. data/lib/isodoc/base_style/typography.scss +1 -1
  8. data/lib/isodoc/convert.rb +13 -85
  9. data/lib/isodoc/css.rb +95 -0
  10. data/lib/isodoc/function/inline_simple.rb +10 -1
  11. data/lib/isodoc/function/lists.rb +2 -1
  12. data/lib/isodoc/function/references.rb +7 -12
  13. data/lib/isodoc/function/section.rb +1 -1
  14. data/lib/isodoc/function/table.rb +10 -0
  15. data/lib/isodoc/function/to_word_html.rb +4 -2
  16. data/lib/isodoc/function/utils.rb +2 -2
  17. data/lib/isodoc/gem_tasks.rb +4 -0
  18. data/lib/isodoc/html_function/html.rb +7 -0
  19. data/lib/isodoc/html_function/mathvariant_to_plain.rb +82 -0
  20. data/lib/isodoc/html_function/postprocess.rb +43 -22
  21. data/lib/isodoc/metadata_contributor.rb +4 -3
  22. data/lib/isodoc/presentation_function/bibdata.rb +3 -3
  23. data/lib/isodoc/presentation_function/inline.rb +5 -3
  24. data/lib/isodoc/presentation_function/section.rb +9 -0
  25. data/lib/isodoc/presentation_xml_convert.rb +2 -0
  26. data/lib/isodoc/version.rb +1 -1
  27. data/lib/isodoc/word_convert.rb +0 -20
  28. data/lib/isodoc/word_function/inline.rb +2 -2
  29. data/lib/isodoc/word_function/postprocess.rb +38 -80
  30. data/lib/isodoc/word_function/postprocess_cover.rb +55 -0
  31. data/lib/isodoc/word_function/table.rb +10 -0
  32. data/lib/isodoc/xref.rb +1 -0
  33. data/lib/isodoc/xref/xref_counter.rb +63 -20
  34. data/lib/isodoc/xref/xref_gen.rb +20 -2
  35. data/lib/isodoc/xref/xref_sect_gen.rb +34 -27
  36. data/spec/assets/html.scss +14 -0
  37. data/spec/isodoc/blocks_spec.rb +26 -73
  38. data/spec/isodoc/cleanup_spec.rb +0 -1
  39. data/spec/isodoc/inline_spec.rb +14 -14
  40. data/spec/isodoc/lists_spec.rb +1 -1
  41. data/spec/isodoc/metadata_spec.rb +3 -1
  42. data/spec/isodoc/postproc_spec.rb +473 -11
  43. data/spec/isodoc/presentation_xml_spec.rb +2 -2
  44. data/spec/isodoc/ref_spec.rb +323 -5
  45. data/spec/isodoc/table_spec.rb +28 -0
  46. data/spec/isodoc/xref_spec.rb +472 -19
  47. metadata +6 -4
@@ -494,7 +494,7 @@ it "customises localisation of numbers" do
494
494
  </bibdata>
495
495
  <preface>
496
496
  <p><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mn>30000</mn></math></stem>
497
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>P</mi><mfenced open="(" close=")"><mrow><mi>X</mi><mo>≥</mo><msub><mrow><mi>X</mi></mrow><mrow><mo>max</mo></mrow></msub></mrow></mfenced><mo>=</mo><munderover><mrow><mo>∑</mo></mrow><mrow><mrow><mi>j</mi><mo>=</mo><msub><mrow><mi>X</mi></mrow><mrow><mo>max</mo></mrow></msub></mrow></mrow><mrow><mn>1000</mn></mrow></munderover><mfenced open="(" close=")"><mtable><mtr><mtd><mn>1000</mn></mtd></mtr><mtr><mtd><mi>j</mi></mtd></mtr></mtable></mfenced><msup><mrow><mi>p</mi></mrow><mrow><mi>j</mi></mrow></msup><msup><mrow><mfenced open="(" close=")"><mrow><mn>1</mn><mo>−</mo><mi>p</mi></mrow></mfenced></mrow><mrow><mrow><mn>1.003</mn><mo>−</mo><mi>j</mi></mrow></mrow></msup></math></stem></p>
497
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>P</mi><mfenced open="(" close=")"><mrow><mi>X</mi><mo>≥</mo><msub><mrow><mi>X</mi></mrow><mrow><mo>max</mo></mrow></msub></mrow></mfenced><mo>=</mo><munderover><mrow><mo>∑</mo></mrow><mrow><mrow><mi>j</mi><mo>=</mo><msub><mrow><mi>X</mi></mrow><mrow><mo>max</mo></mrow></msub></mrow></mrow><mrow><mn>1000</mn></mrow></munderover><mfenced open="(" close=")"><mtable><mtr><mtd><mn>1000</mn></mtd></mtr><mtr><mtd><mi>j</mi></mtd></mtr></mtable></mfenced><msup><mrow><mi>p</mi></mrow><mrow><mi>j</mi></mrow></msup><msup><mrow><mfenced open="(" close=")"><mrow><mn>0.0000032</mn><mo>−</mo><mi>p</mi></mrow></mfenced></mrow><mrow><mrow><mn>1.003</mn><mo>−</mo><mi>j</mi></mrow></mrow></msup></math></stem></p>
498
498
  </preface>
499
499
  </iso-standard>
500
500
  INPUT
@@ -573,7 +573,7 @@ it "customises localisation of numbers" do
573
573
  <mrow>
574
574
  <mfenced open='(' close=')'>
575
575
  <mrow>
576
- <mn>1</mn>
576
+ <mn>0,0000032</mn>
577
577
  <mo>&#x2212;</mo>
578
578
  <mi>p</mi>
579
579
  </mrow>
@@ -63,7 +63,7 @@ RSpec.describe IsoDoc do
63
63
  </bibitem>
64
64
  <bibitem id="ref1">
65
65
  <formattedref format="application/x-isodoc+xml"><smallcap>Standard No I.C.C 167</smallcap>. <em>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</em> (see <link target="http://www.icc.or.at"/>)</formattedref>
66
- <docidentifier type="ICC">167</docidentifier>
66
+ <docidentifier type="ICC">ICC/167</docidentifier>
67
67
  </bibitem>
68
68
  <note><p>This is an annotation of ISO 20483:2013-2014</p></note>
69
69
  <bibitem id="zip_ffs"><formattedref format="application/x-isodoc+xml">Title 5</formattedref><docidentifier type="metanorma">[5]</docidentifier></bibitem>
@@ -136,7 +136,7 @@ RSpec.describe IsoDoc do
136
136
  <eref bibitemid='ISBN'>[1]</eref>
137
137
  <eref bibitemid='ISSN'>[2]</eref>
138
138
  <eref bibitemid='ISO16634'>ISO 16634:-- (all parts)</eref>
139
- <eref bibitemid='ref1'>ICC 167</eref>
139
+ <eref bibitemid='ref1'>ICC/167</eref>
140
140
  <eref bibitemid='ref10'>[10]</eref>
141
141
  <eref bibitemid='ref12'>Citn</eref>
142
142
  <eref bibitemid='zip_ffs'>[5]</eref>
@@ -213,7 +213,7 @@ RSpec.describe IsoDoc do
213
213
  <link target='http://www.icc.or.at'/>
214
214
  )
215
215
  </formattedref>
216
- <docidentifier type='ICC'>167</docidentifier>
216
+ <docidentifier type='ICC'>ICC/167</docidentifier>
217
217
  </bibitem>
218
218
  <note>
219
219
  <name>NOTE</name>
@@ -309,7 +309,7 @@ RSpec.describe IsoDoc do
309
309
  <a href='#ISBN'>[1]</a>
310
310
  <a href='#ISSN'>[2]</a>
311
311
  <a href='#ISO16634'>ISO 16634:-- (all parts)</a>
312
- <a href='#ref1'>ICC 167</a>
312
+ <a href='#ref1'>ICC/167</a>
313
313
  <a href='#ref10'>[10]</a>
314
314
  <a href='#ref12'>Citn</a>
315
315
  <a href='#zip_ffs'>[5]</a>
@@ -342,7 +342,7 @@ RSpec.describe IsoDoc do
342
342
  <i>Cereals and pulses</i>
343
343
  </p>
344
344
  <p id='ref1' class='NormRef'>
345
- ICC 167,
345
+ ICC/167,
346
346
  <span style='font-variant:small-caps;'>Standard No I.C.C 167</span>
347
347
  .
348
348
  <i>
@@ -424,4 +424,322 @@ RSpec.describe IsoDoc do
424
424
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
425
425
  end
426
426
 
427
+
428
+ it "processes hidden references sections in Relaton bibliographies" do
429
+ presxml = <<~PRESXML
430
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
431
+ <bibdata>
432
+ <language current="true">en</language>
433
+ </bibdata>
434
+ <preface>
435
+ <foreword>
436
+ <p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
437
+ <eref bibitemid='ISO712'>[110]</eref>
438
+ <eref bibitemid='ISBN'>[1]</eref>
439
+ <eref bibitemid='ISSN'>[2]</eref>
440
+ <eref bibitemid='ISO16634'>ISO 16634:-- (all parts)</eref>
441
+ <eref bibitemid='ref1'>ICC/167</eref>
442
+ <eref bibitemid='ref10'>[10]</eref>
443
+ <eref bibitemid='ref12'>Citn</eref>
444
+ <eref bibitemid='zip_ffs'>[5]</eref>
445
+ </p>
446
+ </foreword>
447
+ </preface>
448
+ <bibliography>
449
+ <references id='_normative_references' obligation='informative' normative='true' hidden="true">
450
+ <title depth='1'>1.<tab/>Normative References</title>
451
+ <p>
452
+ The following documents are referred to in the text in such a way that
453
+ some or all of their content constitutes requirements of this document.
454
+ For dated references, only the edition cited applies. For undated
455
+ references, the latest edition of the referenced document (including any
456
+ amendments) applies.
457
+ </p>
458
+ <bibitem id='ISO712' type='standard'>
459
+ <title format='text/plain'>Cereals or cereal products</title>
460
+ <title type='main' format='text/plain'>Cereals and cereal products</title>
461
+ <docidentifier type='ISO'>ISO 712</docidentifier>
462
+ <docidentifier type='metanorma'>[110]</docidentifier>
463
+ <contributor>
464
+ <role type='publisher'/>
465
+ <organization>
466
+ <name>International Organization for Standardization</name>
467
+ </organization>
468
+ </contributor>
469
+ </bibitem>
470
+ <bibitem id='ISO16634' type='standard'>
471
+ <title language='x' format='text/plain'>
472
+ Cereals, pulses, milled cereal products, xxxx, oilseeds and animal
473
+ feeding stuffs
474
+ </title>
475
+ <title language='en' format='text/plain'>Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</title>
476
+ <docidentifier type='ISO'>ISO 16634:-- (all parts)</docidentifier>
477
+ <date type='published'>
478
+ <on>--</on>
479
+ </date>
480
+ <contributor>
481
+ <role type='publisher'/>
482
+ <organization>
483
+ <abbreviation>ISO</abbreviation>
484
+ </organization>
485
+ </contributor>
486
+ <note format='text/plain' type='Unpublished-Status' reference='1'>Under preparation. (Stage at the time of publication ISO/DIS 16634)</note>
487
+ <extent type='part'>
488
+ <referenceFrom>all</referenceFrom>
489
+ </extent>
490
+ </bibitem>
491
+ <bibitem id='ISO20483' type='standard'>
492
+ <title format='text/plain'>Cereals and pulses</title>
493
+ <docidentifier type='ISO'>ISO 20483:2013-2014</docidentifier>
494
+ <date type='published'>
495
+ <from>2013</from>
496
+ <to>2014</to>
497
+ </date>
498
+ <contributor>
499
+ <role type='publisher'/>
500
+ <organization>
501
+ <name>International Organization for Standardization</name>
502
+ </organization>
503
+ </contributor>
504
+ </bibitem>
505
+ <bibitem id='ref1'>
506
+ <formattedref format='application/x-isodoc+xml'>
507
+ <smallcap>Standard No I.C.C 167</smallcap>
508
+ .
509
+ <em>
510
+ Determination of the protein content in cereal and cereal products
511
+ for food and animal feeding stuffs according to the Dumas combustion
512
+ method
513
+ </em>
514
+ (see
515
+ <link target='http://www.icc.or.at'/>
516
+ )
517
+ </formattedref>
518
+ <docidentifier type='ICC'>ICC/167</docidentifier>
519
+ </bibitem>
520
+ <note>
521
+ <name>NOTE</name>
522
+ <p>This is an annotation of ISO 20483:2013-2014</p>
523
+ </note>
524
+ <bibitem id='zip_ffs'>
525
+ <formattedref format='application/x-isodoc+xml'>Title 5</formattedref>
526
+ <docidentifier type='metanorma'>[5]</docidentifier>
527
+ </bibitem>
528
+ </references>
529
+ <references id='_bibliography' obligation='informative' normative='false' hidden="true">
530
+ <title depth="1">Bibliography</title>
531
+ <bibitem id='ISBN' type='ISBN'>
532
+ <title format='text/plain'>Chemicals for analytical laboratory use</title>
533
+ <docidentifier type='ISBN'>ISBN</docidentifier>
534
+ <docidentifier type='metanorma'>[1]</docidentifier>
535
+ <contributor>
536
+ <role type='publisher'/>
537
+ <organization>
538
+ <abbreviation>ISBN</abbreviation>
539
+ </organization>
540
+ </contributor>
541
+ </bibitem>
542
+ <bibitem id='ISSN' type='ISSN'>
543
+ <title format='text/plain'>Instruments for analytical laboratory use</title>
544
+ <docidentifier type='ISSN'>ISSN</docidentifier>
545
+ <docidentifier type='metanorma'>[2]</docidentifier>
546
+ <contributor>
547
+ <role type='publisher'/>
548
+ <organization>
549
+ <abbreviation>ISSN</abbreviation>
550
+ </organization>
551
+ </contributor>
552
+ </bibitem>
553
+ <note>
554
+ <name>NOTE</name>
555
+ <p>This is an annotation of document ISSN.</p>
556
+ </note>
557
+ <note>
558
+ <name>NOTE</name>
559
+ <p>This is another annotation of document ISSN.</p>
560
+ </note>
561
+ <bibitem id='ISO3696' type='standard'>
562
+ <title format='text/plain'>Water for analytical laboratory use</title>
563
+ <docidentifier type='ISO'>ISO 3696</docidentifier>
564
+ <contributor>
565
+ <role type='publisher'/>
566
+ <organization>
567
+ <abbreviation>ISO</abbreviation>
568
+ </organization>
569
+ </contributor>
570
+ </bibitem>
571
+ <bibitem id='ref10'>
572
+ <formattedref format='application/x-isodoc+xml'>
573
+ <smallcap>Standard No I.C.C 167</smallcap>
574
+ .
575
+ <em>
576
+ Determination of the protein content in cereal and cereal products
577
+ for food and animal feeding stuffs according to the Dumas combustion
578
+ method
579
+ </em>
580
+ (see
581
+ <link target='http://www.icc.or.at'/>
582
+ )
583
+ </formattedref>
584
+ <docidentifier type='metanorma'>[10]</docidentifier>
585
+ </bibitem>
586
+ <bibitem id='ref11'>
587
+ <title>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</title>
588
+ <docidentifier type='IETF'>RFC 10</docidentifier>
589
+ </bibitem>
590
+ <bibitem id='ref12'>
591
+ <formattedref format='application/x-isodoc+xml'>
592
+ CitationWorks. 2019.
593
+ <em>How to cite a reference</em>
594
+ .
595
+ </formattedref>
596
+ <docidentifier type='metanorma'>[Citn]</docidentifier>
597
+ <docidentifier type='IETF'>RFC 20</docidentifier>
598
+ </bibitem>
599
+ </references>
600
+ </bibliography>
601
+ </iso-standard>
602
+ PRESXML
603
+
604
+ html = <<~OUTPUT
605
+ #{HTML_HDR}
606
+ <br/>
607
+ <div>
608
+ <h1 class='ForewordTitle'>Foreword</h1>
609
+ <p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
610
+ <a href='#ISO712'>[110]</a>
611
+ <a href='#ISBN'>[1]</a>
612
+ <a href='#ISSN'>[2]</a>
613
+ <a href='#ISO16634'>ISO 16634:-- (all parts)</a>
614
+ <a href='#ref1'>ICC/167</a>
615
+ <a href='#ref10'>[10]</a>
616
+ <a href='#ref12'>Citn</a>
617
+ <a href='#zip_ffs'>[5]</a>
618
+ </p>
619
+ </div>
620
+ <p class='zzSTDTitle1'/>
621
+ </div>
622
+ </body>
623
+ </html>
624
+
625
+ OUTPUT
626
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
627
+ end
628
+
629
+ it "processes hidden references sections in Relaton bibliographies" do
630
+ presxml = <<~PRESXML
631
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type="presentation">
632
+ <bibdata>
633
+ <language current="true">en</language>
634
+ </bibdata>
635
+ <preface>
636
+ <foreword>
637
+ <p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
638
+ <eref bibitemid='ISO712'>[110]</eref>
639
+ <eref bibitemid='ISBN'>[1]</eref>
640
+ <eref bibitemid='ISSN'>[2]</eref>
641
+ <eref bibitemid='ISO16634'>ISO 16634:-- (all parts)</eref>
642
+ <eref bibitemid='ref1'>ICC/167</eref>
643
+ <eref bibitemid='ref10'>[10]</eref>
644
+ <eref bibitemid='ref12'>Citn</eref>
645
+ <eref bibitemid='zip_ffs'>[5]</eref>
646
+ </p>
647
+ </foreword>
648
+ </preface>
649
+ <bibliography>
650
+ <references id='_normative_references' obligation='informative' normative='true'>
651
+ <title depth='1'>1.<tab/>Normative References</title>
652
+ <p>
653
+ The following documents are referred to in the text in such a way that
654
+ some or all of their content constitutes requirements of this document.
655
+ For dated references, only the edition cited applies. For undated
656
+ references, the latest edition of the referenced document (including any
657
+ amendments) applies.
658
+ </p>
659
+ <bibitem id='ISO712' type='standard' hidden="true">
660
+ <title format='text/plain'>Cereals or cereal products</title>
661
+ <title type='main' format='text/plain'>Cereals and cereal products</title>
662
+ <docidentifier type='ISO'>ISO 712</docidentifier>
663
+ <docidentifier type='metanorma'>[110]</docidentifier>
664
+ <contributor>
665
+ <role type='publisher'/>
666
+ <organization>
667
+ <name>International Organization for Standardization</name>
668
+ </organization>
669
+ </contributor>
670
+ </bibitem>
671
+ <bibitem id='ISO16634' type='standard'>
672
+ <title language='x' format='text/plain'>
673
+ Cereals, pulses, milled cereal products, xxxx, oilseeds and animal
674
+ feeding stuffs
675
+ </title>
676
+ <title language='en' format='text/plain'>Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</title>
677
+ <docidentifier type='ISO'>ISO 16634:-- (all parts)</docidentifier>
678
+ <date type='published'>
679
+ <on>--</on>
680
+ </date>
681
+ <contributor>
682
+ <role type='publisher'/>
683
+ <organization>
684
+ <abbreviation>ISO</abbreviation>
685
+ </organization>
686
+ </contributor>
687
+ <note format='text/plain' type='Unpublished-Status' reference='1'>Under preparation. (Stage at the time of publication ISO/DIS 16634)</note>
688
+ <extent type='part'>
689
+ <referenceFrom>all</referenceFrom>
690
+ </extent>
691
+ </bibitem>
692
+ </references></bibliography></iso-standard>
693
+ PRESXML
694
+
695
+ html = <<~OUTPUT
696
+ #{HTML_HDR}
697
+ <br/>
698
+ <div>
699
+ <h1 class='ForewordTitle'>Foreword</h1>
700
+ <p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
701
+ <a href='#ISO712'>[110]</a>
702
+ <a href='#ISBN'>[1]</a>
703
+ <a href='#ISSN'>[2]</a>
704
+ <a href='#ISO16634'>ISO 16634:-- (all parts)</a>
705
+ <a href='#ref1'>ICC/167</a>
706
+ <a href='#ref10'>[10]</a>
707
+ <a href='#ref12'>Citn</a>
708
+ <a href='#zip_ffs'>[5]</a>
709
+ </p>
710
+ </div>
711
+ <p class='zzSTDTitle1'/>
712
+ <div>
713
+ <h1>1.&#160; Normative References</h1>
714
+ <p>
715
+ The following documents are referred to in the text in such a way
716
+ that some or all of their content constitutes requirements of this
717
+ document. For dated references, only the edition cited applies. For
718
+ undated references, the latest edition of the referenced document
719
+ (including any amendments) applies.
720
+ </p>
721
+ <p id='ISO16634' class='NormRef'>
722
+ ISO 16634:-- (all parts)
723
+ <a class='FootnoteRef' href='#fn:1'>
724
+ <sup>1</sup>
725
+ </a>
726
+ ,
727
+ <i>Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</i>
728
+ </p>
729
+ </div>
730
+ <aside id='fn:1' class='footnote'>
731
+ <p>Under preparation. (Stage at the time of publication ISO/DIS 16634)</p>
732
+ </aside>
733
+
734
+ </div>
735
+ </body>
736
+ </html>
737
+
738
+ OUTPUT
739
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
740
+ end
741
+
742
+
427
743
  end
744
+
745
+
@@ -8,6 +8,13 @@ RSpec.describe IsoDoc do
8
8
  <foreword>
9
9
  <table id="tableD-1" alt="tool tip" summary="long desc" width="70%" keep-with-next="true" keep-lines-together="true">
10
10
  <name>Repeatability and reproducibility of <em>husked</em> rice yield<fn reference="1"><p>X</p></fn></name>
11
+ <colgroup>
12
+ <col width="30%"/>
13
+ <col width="20%"/>
14
+ <col width="20%"/>
15
+ <col width="20%"/>
16
+ <col width="10%"/>
17
+ </colgroup>
11
18
  <thead>
12
19
  <tr>
13
20
  <td rowspan="2" align="left">Description</td>
@@ -77,6 +84,13 @@ RSpec.describe IsoDoc do
77
84
  <p>X</p>
78
85
  </fn>
79
86
  </name>
87
+ <colgroup>
88
+ <col width='30%'/>
89
+ <col width='20%'/>
90
+ <col width='20%'/>
91
+ <col width='20%'/>
92
+ <col width='10%'/>
93
+ </colgroup>
80
94
  <thead>
81
95
  <tr>
82
96
  <td rowspan='2' align='left'>Description</td>
@@ -165,6 +179,13 @@ html = <<~OUTPUT
165
179
  <caption>
166
180
  <span style="display:none">long desc</span>
167
181
  </caption>
182
+ <colgroup>
183
+ <col style='width: 30%;'/>
184
+ <col style='width: 20%;'/>
185
+ <col style='width: 20%;'/>
186
+ <col style='width: 20%;'/>
187
+ <col style='width: 10%;'/>
188
+ </colgroup>
168
189
  <thead>
169
190
  <tr>
170
191
  <td rowspan="2" style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;" scope="col">Description</td>
@@ -259,6 +280,13 @@ html = <<~OUTPUT
259
280
  </p>
260
281
  <div align='center' class='table_container'>
261
282
  <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%'>
283
+ <colgroup>
284
+ <col width='30%'/>
285
+ <col width='20%'/>
286
+ <col width='20%'/>
287
+ <col width='20%'/>
288
+ <col width='10%'/>
289
+ </colgroup>
262
290
  <thead>
263
291
  <tr>
264
292
  <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>
@@ -2313,7 +2313,7 @@ OUTPUT
2313
2313
  <li id="N1"><p>A</p></li>
2314
2314
  </ol>
2315
2315
  <clause id="xyz"><title>Preparatory</title>
2316
- <ol id="N02">
2316
+ <ol id="N02" type="arabic">
2317
2317
  <li id="N2"><p>A</p></li>
2318
2318
  </ol>
2319
2319
  </clause>
@@ -2321,17 +2321,17 @@ OUTPUT
2321
2321
  </preface>
2322
2322
  <sections>
2323
2323
  <clause id="scope" type="scope"><title>Scope</title>
2324
- <ol id="N0">
2324
+ <ol id="N0" type="roman">
2325
2325
  <li id="N"><p>A</p></li>
2326
2326
  </ol>
2327
2327
  </clause>
2328
2328
  <terms id="terms"/>
2329
2329
  <clause id="widgets"><title>Widgets</title>
2330
2330
  <clause id="widgets1">
2331
- <ol id="note1l">
2331
+ <ol id="note1l" type="alphabet">
2332
2332
  <li id="note1"><p>A</p></li>
2333
2333
  </ol>
2334
- <ol id="note2l">
2334
+ <ol id="note2l" type="roman_upper">
2335
2335
  <li id="note2"><p>A</p></li>
2336
2336
  </ol>
2337
2337
  </clause>
@@ -2339,12 +2339,12 @@ OUTPUT
2339
2339
  </sections>
2340
2340
  <annex id="annex1">
2341
2341
  <clause id="annex1a">
2342
- <ol id="ANl">
2342
+ <ol id="ANl" type="alphabet_upper">
2343
2343
  <li id="AN"><p>A</p></li>
2344
2344
  </ol>
2345
2345
  </clause>
2346
2346
  <clause id="annex1b">
2347
- <ol id="Anote1l">
2347
+ <ol id="Anote1l" type="roman" start="4">
2348
2348
  <li id="Anote1"><p>A</p></li>
2349
2349
  </ol>
2350
2350
  <ol id="Anote2l">
@@ -2360,12 +2360,12 @@ OUTPUT
2360
2360
  <foreword>
2361
2361
  <p>
2362
2362
  <xref target='N1'>Introduction, a)</xref>
2363
- <xref target='N2'>Preparatory, a)</xref>
2364
- <xref target='N'>Clause 1, a)</xref>
2363
+ <xref target='N2'>Preparatory, 1)</xref>
2364
+ <xref target='N'>Clause 1, i)</xref>
2365
2365
  <xref target='note1'>Clause 3.1, List 1 a)</xref>
2366
- <xref target='note2'>Clause 3.1, List 2 a)</xref>
2367
- <xref target='AN'>Annex A.1, a)</xref>
2368
- <xref target='Anote1'>Annex A.2, List 1 a)</xref>
2366
+ <xref target='note2'>Clause 3.1, List 2 I)</xref>
2367
+ <xref target='AN'>Annex A.1, A)</xref>
2368
+ <xref target='Anote1'>Annex A.2, List 1 iv)</xref>
2369
2369
  <xref target='Anote2'>Annex A.2, List 2 a)</xref>
2370
2370
  </p>
2371
2371
  </foreword>
@@ -2377,7 +2377,7 @@ OUTPUT
2377
2377
  </ol>
2378
2378
  <clause id='xyz'>
2379
2379
  <title depth='2'>Preparatory</title>
2380
- <ol id='N02'>
2380
+ <ol id='N02' type="arabic">
2381
2381
  <li id='N2'>
2382
2382
  <p>A</p>
2383
2383
  </li>
@@ -2392,7 +2392,7 @@ OUTPUT
2392
2392
  <tab/>
2393
2393
  Scope
2394
2394
  </title>
2395
- <ol id='N0'>
2395
+ <ol id='N0' type="roman">
2396
2396
  <li id='N'>
2397
2397
  <p>A</p>
2398
2398
  </li>
@@ -2408,12 +2408,12 @@ OUTPUT
2408
2408
  Widgets
2409
2409
  </title>
2410
2410
  <clause id='widgets1'><title>3.1.</title>
2411
- <ol id='note1l'>
2411
+ <ol id='note1l' type="alphabet">
2412
2412
  <li id='note1'>
2413
2413
  <p>A</p>
2414
2414
  </li>
2415
2415
  </ol>
2416
- <ol id='note2l'>
2416
+ <ol id='note2l' type="roman_upper">
2417
2417
  <li id='note2'>
2418
2418
  <p>A</p>
2419
2419
  </li>
@@ -2428,14 +2428,14 @@ OUTPUT
2428
2428
  (informative)
2429
2429
  </title>
2430
2430
  <clause id='annex1a'><title>A.1.</title>
2431
- <ol id='ANl'>
2431
+ <ol id='ANl' type="alphabet_upper">
2432
2432
  <li id='AN'>
2433
2433
  <p>A</p>
2434
2434
  </li>
2435
2435
  </ol>
2436
2436
  </clause>
2437
2437
  <clause id='annex1b'><title>A.2.</title>
2438
- <ol id='Anote1l'>
2438
+ <ol id='Anote1l' type="roman" start="4">
2439
2439
  <li id='Anote1'>
2440
2440
  <p>A</p>
2441
2441
  </li>
@@ -2547,6 +2547,151 @@ OUTPUT
2547
2547
  OUTPUT
2548
2548
  end
2549
2549
 
2550
+ it "cross-references bookmarks" do
2551
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
2552
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
2553
+ <preface>
2554
+ <foreword>
2555
+ <p>
2556
+ <xref target="N1"/>
2557
+ <xref target="N2"/>
2558
+ <xref target="N"/>
2559
+ <xref target="note1"/>
2560
+ <xref target="note2"/>
2561
+ <xref target="AN"/>
2562
+ <xref target="Anote1"/>
2563
+ <xref target="Anote2"/>
2564
+ </p>
2565
+ </foreword>
2566
+ <introduction id="intro">
2567
+ <p id="N01">
2568
+ <bookmark id="N1"/>
2569
+ </p>
2570
+ <clause id="xyz"><title>Preparatory</title>
2571
+ <p id="N02" type="arabic">
2572
+ <bookmark id="N2"/>
2573
+ </p>
2574
+ </clause>
2575
+ </introduction>
2576
+ </preface>
2577
+ <sections>
2578
+ <clause id="scope" type="scope"><title>Scope</title>
2579
+ <p id="N0" type="roman">
2580
+ <bookmark id="N"/>
2581
+ </p>
2582
+ </clause>
2583
+ <terms id="terms"/>
2584
+ <clause id="widgets"><title>Widgets</title>
2585
+ <clause id="widgets1">
2586
+ <p id="note1l" type="alphabet">
2587
+ <bookmark id="note1"/>
2588
+ </p>
2589
+ <p id="note2l" type="roman_upper">
2590
+ <bookmark id="note2"/>
2591
+ </p>
2592
+ </clause>
2593
+ </clause>
2594
+ </sections>
2595
+ <annex id="annex1">
2596
+ <clause id="annex1a">
2597
+ <p id="ANl" type="alphabet_upper">
2598
+ <bookmark id="AN"/>
2599
+ </p>
2600
+ </clause>
2601
+ <clause id="annex1b">
2602
+ <p id="Anote1l" type="roman" start="4">
2603
+ <bookmark id="Anote1"/>
2604
+ </p>
2605
+ <p id="Anote2l">
2606
+ <bookmark id="Anote2"/>
2607
+ </p>
2608
+ </clause>
2609
+ </annex>
2610
+ </iso-standard>
2611
+ INPUT
2612
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
2613
+ <preface>
2614
+ <foreword>
2615
+ <p>
2616
+ <xref target='N1'>Introduction</xref>
2617
+ <xref target='N2'>Preparatory</xref>
2618
+ <xref target='N'>Clause 1</xref>
2619
+ <xref target='note1'>Clause 3.1</xref>
2620
+ <xref target='note2'>Clause 3.1</xref>
2621
+ <xref target='AN'>Annex A.1</xref>
2622
+ <xref target='Anote1'>Annex A.2</xref>
2623
+ <xref target='Anote2'>Annex A.2</xref>
2624
+ </p>
2625
+ </foreword>
2626
+ <introduction id='intro'>
2627
+ <p id='N01'>
2628
+ <bookmark id='N1'/>
2629
+ </p>
2630
+ <clause id='xyz'>
2631
+ <title depth='2'>Preparatory</title>
2632
+ <p id='N02' type='arabic'>
2633
+ <bookmark id='N2'/>
2634
+ </p>
2635
+ </clause>
2636
+ </introduction>
2637
+ </preface>
2638
+ <sections>
2639
+ <clause id='scope' type='scope'>
2640
+ <title depth='1'>
2641
+ 1.
2642
+ <tab/>
2643
+ Scope
2644
+ </title>
2645
+ <p id='N0' type='roman'>
2646
+ <bookmark id='N'/>
2647
+ </p>
2648
+ </clause>
2649
+ <terms id='terms'>
2650
+ <title>2.</title>
2651
+ </terms>
2652
+ <clause id='widgets'>
2653
+ <title depth='1'>
2654
+ 3.
2655
+ <tab/>
2656
+ Widgets
2657
+ </title>
2658
+ <clause id='widgets1'>
2659
+ <title>3.1.</title>
2660
+ <p id='note1l' type='alphabet'>
2661
+ <bookmark id='note1'/>
2662
+ </p>
2663
+ <p id='note2l' type='roman_upper'>
2664
+ <bookmark id='note2'/>
2665
+ </p>
2666
+ </clause>
2667
+ </clause>
2668
+ </sections>
2669
+ <annex id='annex1'>
2670
+ <title>
2671
+ <strong>Annex A</strong>
2672
+ <br/>
2673
+ (informative)
2674
+ </title>
2675
+ <clause id='annex1a'>
2676
+ <title>A.1.</title>
2677
+ <p id='ANl' type='alphabet_upper'>
2678
+ <bookmark id='AN'/>
2679
+ </p>
2680
+ </clause>
2681
+ <clause id='annex1b'>
2682
+ <title>A.2.</title>
2683
+ <p id='Anote1l' type='roman' start='4'>
2684
+ <bookmark id='Anote1'/>
2685
+ </p>
2686
+ <p id='Anote2l'>
2687
+ <bookmark id='Anote2'/>
2688
+ </p>
2689
+ </clause>
2690
+ </annex>
2691
+ </iso-standard>
2692
+ OUTPUT
2693
+ end
2694
+
2550
2695
  it "realises subsequences" do
2551
2696
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
2552
2697
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -2665,6 +2810,31 @@ INPUT
2665
2810
  <xref target="N12"/>
2666
2811
  <xref target="N13"/>
2667
2812
  </p>
2813
+ <p>
2814
+ <xref target="S1"/>
2815
+ <xref target="S2"/>
2816
+ <xref target="S3"/>
2817
+ <xref target="S4"/>
2818
+ <xref target="S12"/>
2819
+ <xref target="S13"/>
2820
+ <xref target="S14"/>
2821
+ <xref target="S15"/>
2822
+ <xref target="S16"/>
2823
+ <xref target="S17"/>
2824
+ <xref target="S18"/>
2825
+ <xref target="S19"/>
2826
+ <xref target="S20"/>
2827
+ <xref target="S21"/>
2828
+ <xref target="S22"/>
2829
+ <xref target="S23"/>
2830
+ <xref target="S24"/>
2831
+ <xref target="S25"/>
2832
+ <xref target="S26"/>
2833
+ <xref target="S27"/>
2834
+ <xref target="S28"/>
2835
+ <xref target="S29"/>
2836
+ <xref target="S30"/>
2837
+ </p>
2668
2838
  </foreword>
2669
2839
  <introduction id="intro">
2670
2840
  <figure id="N1"> <name>Split-it-right sample divider</name>
@@ -2707,6 +2877,83 @@ INPUT
2707
2877
  <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2708
2878
  </figure>
2709
2879
  </introduction>
2880
+ </preface>
2881
+ <sections>
2882
+ <clause id='S1' number='1bis' type='scope' inline-header='false' obligation='normative'>
2883
+ <title>Scope</title>
2884
+ <p id='_'>Text</p>
2885
+ </clause>
2886
+ <terms id='S3' number='3bis' obligation='normative'>
2887
+ <title>Terms and definitions</title>
2888
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
2889
+ <term id='S4' number='4bis'>
2890
+ <preferred>Term1</preferred>
2891
+ </term>
2892
+ </terms>
2893
+ <definitions id='S12' number='12bis' type='abbreviated_terms' obligation='normative'>
2894
+ <title>Abbreviated terms</title>
2895
+ </definitions>
2896
+ <clause id='S13' number='13bis' inline-header='false' obligation='normative'>
2897
+ <title>Clause 4</title>
2898
+ <clause id='S14' number='14bis' inline-header='false' obligation='normative'>
2899
+ <title>Introduction</title>
2900
+ </clause>
2901
+ <clause id='S15' inline-header='false' obligation='normative'>
2902
+ <title>Clause A</title>
2903
+ </clause>
2904
+ <clause id='S16' inline-header='false' obligation='normative'>
2905
+ <title>Clause B</title>
2906
+ </clause>
2907
+ <clause id='S17' number='0' inline-header='false' obligation='normative'>
2908
+ <title>Clause C</title>
2909
+ </clause>
2910
+ <clause id='S18' inline-header='false' obligation='normative'>
2911
+ <title>Clause D</title>
2912
+ </clause>
2913
+ <clause id='S19' inline-header='false' obligation='normative'>
2914
+ <title>Clause E</title>
2915
+ </clause>
2916
+ <clause id='S20' number='a' inline-header='false' obligation='normative'>
2917
+ <title>Clause F</title>
2918
+ </clause>
2919
+ <clause id='S21' inline-header='false' obligation='normative'>
2920
+ <title>Clause G</title>
2921
+ </clause>
2922
+ <clause id='S22' number='B' inline-header='false' obligation='normative'>
2923
+ <title>Clause H</title>
2924
+ </clause>
2925
+ <clause id='S23' inline-header='false' obligation='normative'>
2926
+ <title>Clause I</title>
2927
+ </clause>
2928
+ </clause>
2929
+ <clause id='S24' number='16bis' inline-header='false' obligation='normative'>
2930
+ <title>Terms and Definitions</title>
2931
+ </clause>
2932
+ </sections>
2933
+ <annex id='S25' obligation='normative'>
2934
+ <title>First Annex</title>
2935
+ </annex>
2936
+ <annex id='S26' number='17bis' inline-header='false' obligation='normative'>
2937
+ <title>Annex</title>
2938
+ <clause id='S27' number='18bis' inline-header='false' obligation='normative'>
2939
+ <title>Annex A.1</title>
2940
+ </clause>
2941
+ </annex>
2942
+ <annex id='S28' inline-header='false' obligation='normative'>
2943
+ <title>Another Annex</title>
2944
+ </annex>
2945
+ <bibliography>
2946
+ <references id='S2' number='2bis' normative='true' obligation='informative'>
2947
+ <title>Normative references</title>
2948
+ <p id='_'>There are no normative references in this document.</p>
2949
+ </references>
2950
+ <clause id='S29' number='19bis' obligation='informative'>
2951
+ <title>Bibliography</title>
2952
+ <references id='S30' number='20bis' normative='false' obligation='informative'>
2953
+ <title>Bibliography Subsection</title>
2954
+ </references>
2955
+ </clause>
2956
+ </bibliography>
2710
2957
  </iso-standard>
2711
2958
  INPUT
2712
2959
  <?xml version='1.0'?>
@@ -2716,7 +2963,7 @@ INPUT
2716
2963
  <p>
2717
2964
  <xref target='N1'>Figure 1</xref>
2718
2965
  <xref target='N2'>Figure A</xref>
2719
- <xref target='N3'>Figure 2</xref>
2966
+ <xref target='N3'>Figure B</xref>
2720
2967
  <xref target='N4'>Figure 7</xref>
2721
2968
  <xref target='N5'>Figure 8</xref>
2722
2969
  <xref target='N6'>Figure 9a</xref>
@@ -2728,6 +2975,31 @@ INPUT
2728
2975
  <xref target='N12'>Figure A.2</xref>
2729
2976
  <xref target='N13'>Figure 100</xref>
2730
2977
  </p>
2978
+ <p>
2979
+ <xref target='S1'>Clause 1bis</xref>
2980
+ <xref target='S2'>Clause 2bis</xref>
2981
+ <xref target='S3'>Clause 3bis</xref>
2982
+ <xref target='S4'>Clause 3bis.4bis</xref>
2983
+ <xref target='S12'>Clause 12bis</xref>
2984
+ <xref target='S13'>Clause 13bis</xref>
2985
+ <xref target='S14'>Clause 13bis.14bis</xref>
2986
+ <xref target='S15'>Clause 13bis.14bit</xref>
2987
+ <xref target='S16'>Clause 13bis.14biu</xref>
2988
+ <xref target='S17'>Clause 13bis.0</xref>
2989
+ <xref target='S18'>Clause 13bis.1</xref>
2990
+ <xref target='S19'>Clause 13bis.2</xref>
2991
+ <xref target='S20'>Clause 13bis.a</xref>
2992
+ <xref target='S21'>Clause 13bis.b</xref>
2993
+ <xref target='S22'>Clause 13bis.B</xref>
2994
+ <xref target='S23'>Clause 13bis.C</xref>
2995
+ <xref target='S24'>Clause 16bis</xref>
2996
+ <xref target='S25'>Annex A</xref>
2997
+ <xref target='S26'>Annex 17bis</xref>
2998
+ <xref target='S27'>Annex 17bis.18bis</xref>
2999
+ <xref target='S28'>Annex 17bit</xref>
3000
+ <xref target='S29'>Bibliography</xref>
3001
+ <xref target='S30'>Bibliography Subsection</xref>
3002
+ </p>
2731
3003
  </foreword>
2732
3004
  <introduction id='intro'>
2733
3005
  <figure id='N1'>
@@ -2739,7 +3011,7 @@ INPUT
2739
3011
  <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
2740
3012
  </figure>
2741
3013
  <figure id='N3'>
2742
- <name>Figure 2&#xA0;&#x2014; Split-it-right sample divider</name>
3014
+ <name>Figure B&#xA0;&#x2014; Split-it-right sample divider</name>
2743
3015
  <image src='rice_images/rice_image1.png' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f0' mimetype='image/png'/>
2744
3016
  </figure>
2745
3017
  <figure id='N4' number='7'>
@@ -2785,8 +3057,189 @@ INPUT
2785
3057
 
2786
3058
  </introduction>
2787
3059
  </preface>
3060
+ <sections>
3061
+ <clause id='S1' number='1bis' type='scope' inline-header='false' obligation='normative'>
3062
+ <title depth='1'>
3063
+ 1bis.
3064
+ <tab/>
3065
+ Scope
3066
+ </title>
3067
+ <p id='_'>Text</p>
3068
+ </clause>
3069
+ <terms id='S3' number='3bis' obligation='normative'>
3070
+ <title depth='1'>
3071
+ 3bis.
3072
+ <tab/>
3073
+ Terms and definitions
3074
+ </title>
3075
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
3076
+ <term id='S4' number='4bis'>
3077
+ <name>3bis.4bis.</name>
3078
+ <preferred>Term1</preferred>
3079
+ </term>
3080
+ </terms>
3081
+ <definitions id='S12' number='12bis' type='abbreviated_terms' obligation='normative'>
3082
+ <title depth='1'>
3083
+ 12bis.
3084
+ <tab/>
3085
+ Abbreviated terms
3086
+ </title>
3087
+ </definitions>
3088
+ <clause id='S13' number='13bis' inline-header='false' obligation='normative'>
3089
+ <title depth='1'>
3090
+ 13bis.
3091
+ <tab/>
3092
+ Clause 4
3093
+ </title>
3094
+ <clause id='S14' number='14bis' inline-header='false' obligation='normative'>
3095
+ <title depth='2'>
3096
+ 13bis.14bis.
3097
+ <tab/>
3098
+ Introduction
3099
+ </title>
3100
+ </clause>
3101
+ <clause id='S15' inline-header='false' obligation='normative'>
3102
+ <title depth='2'>
3103
+ 13bis.14bit.
3104
+ <tab/>
3105
+ Clause A
3106
+ </title>
3107
+ </clause>
3108
+ <clause id='S16' inline-header='false' obligation='normative'>
3109
+ <title depth='2'>
3110
+ 13bis.14biu.
3111
+ <tab/>
3112
+ Clause B
3113
+ </title>
3114
+ </clause>
3115
+ <clause id='S17' number='0' inline-header='false' obligation='normative'>
3116
+ <title depth='2'>
3117
+ 13bis.0.
3118
+ <tab/>
3119
+ Clause C
3120
+ </title>
3121
+ </clause>
3122
+ <clause id='S18' inline-header='false' obligation='normative'>
3123
+ <title depth='2'>
3124
+ 13bis.1.
3125
+ <tab/>
3126
+ Clause D
3127
+ </title>
3128
+ </clause>
3129
+ <clause id='S19' inline-header='false' obligation='normative'>
3130
+ <title depth='2'>
3131
+ 13bis.2.
3132
+ <tab/>
3133
+ Clause E
3134
+ </title>
3135
+ </clause>
3136
+ <clause id='S20' number='a' inline-header='false' obligation='normative'>
3137
+ <title depth='2'>
3138
+ 13bis.a.
3139
+ <tab/>
3140
+ Clause F
3141
+ </title>
3142
+ </clause>
3143
+ <clause id='S21' inline-header='false' obligation='normative'>
3144
+ <title depth='2'>
3145
+ 13bis.b.
3146
+ <tab/>
3147
+ Clause G
3148
+ </title>
3149
+ </clause>
3150
+ <clause id='S22' number='B' inline-header='false' obligation='normative'>
3151
+ <title depth='2'>
3152
+ 13bis.B.
3153
+ <tab/>
3154
+ Clause H
3155
+ </title>
3156
+ </clause>
3157
+ <clause id='S23' inline-header='false' obligation='normative'>
3158
+ <title depth='2'>
3159
+ 13bis.C.
3160
+ <tab/>
3161
+ Clause I
3162
+ </title>
3163
+ </clause>
3164
+ </clause>
3165
+ <clause id='S24' number='16bis' inline-header='false' obligation='normative'>
3166
+ <title depth='1'>
3167
+ 16bis.
3168
+ <tab/>
3169
+ Terms and Definitions
3170
+ </title>
3171
+ </clause>
3172
+ </sections>
3173
+ <annex id='S25' obligation='normative'>
3174
+ <title>
3175
+ <strong>Annex A</strong>
3176
+ <br/>
3177
+ (normative)
3178
+ <br/>
3179
+ <br/>
3180
+ <strong>First Annex</strong>
3181
+ </title>
3182
+ </annex>
3183
+ <annex id='S26' number='17bis' inline-header='false' obligation='normative'>
3184
+ <title>
3185
+ <strong>Annex 17bis</strong>
3186
+ <br/>
3187
+ (normative)
3188
+ <br/>
3189
+ <br/>
3190
+ <strong>Annex</strong>
3191
+ </title>
3192
+ <clause id='S27' number='18bis' inline-header='false' obligation='normative'>
3193
+ <title depth='2'>
3194
+ 17bis.18bis.
3195
+ <tab/>
3196
+ Annex A.1
3197
+ </title>
3198
+ </clause>
3199
+ </annex>
3200
+ <annex id='S28' inline-header='false' obligation='normative'>
3201
+ <title>
3202
+ <strong>Annex 17bit</strong>
3203
+ <br/>
3204
+ (normative)
3205
+ <br/>
3206
+ <br/>
3207
+ <strong>Another Annex</strong>
3208
+ </title>
3209
+ </annex>
3210
+ <bibliography>
3211
+ <references id='S2' number='2bis' normative='true' obligation='informative'>
3212
+ <title depth='1'>
3213
+ 2bis.
3214
+ <tab/>
3215
+ Normative references
3216
+ </title>
3217
+ <p id='_'>There are no normative references in this document.</p>
3218
+ </references>
3219
+ <clause id='S29' number='19bis' obligation='informative'>
3220
+ <title depth='1'>Bibliography</title>
3221
+ <references id='S30' number='20bis' normative='false' obligation='informative'>
3222
+ <title depth='2'>Bibliography Subsection</title>
3223
+ </references>
3224
+ </clause>
3225
+ </bibliography>
2788
3226
  </iso-standard>
2789
3227
  OUTPUT
2790
3228
  end
2791
3229
 
3230
+ it "realises roman counter for xrefs" do
3231
+ a = IsoDoc::XrefGen::Counter.new(0, numerals: :roman)
3232
+ a.increment({})
3233
+ expect(a.print).to eq "I"
3234
+ a.increment({})
3235
+ expect(a.print).to eq "II"
3236
+ a.increment({})
3237
+ expect(a.print).to eq "III"
3238
+ a.increment({})
3239
+ expect(a.print).to eq "IV"
3240
+ a.increment({})
3241
+ expect(a.print).to eq "V"
3242
+
3243
+ end
3244
+
2792
3245
  end