isodoc 1.3.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +14 -0
  3. data/isodoc.gemspec +2 -2
  4. data/lib/isodoc-yaml/i18n-en.yaml +55 -0
  5. data/lib/isodoc-yaml/i18n-fr.yaml +56 -0
  6. data/lib/isodoc/convert.rb +2 -1
  7. data/lib/isodoc/function/inline_simple.rb +10 -1
  8. data/lib/isodoc/function/section.rb +1 -1
  9. data/lib/isodoc/function/table.rb +10 -0
  10. data/lib/isodoc/function/to_word_html.rb +4 -2
  11. data/lib/isodoc/function/utils.rb +4 -4
  12. data/lib/isodoc/gem_tasks.rb +4 -0
  13. data/lib/isodoc/html_function/html.rb +7 -0
  14. data/lib/isodoc/html_function/mathvariant_to_plain.rb +82 -0
  15. data/lib/isodoc/html_function/postprocess.rb +32 -19
  16. data/lib/isodoc/metadata_contributor.rb +4 -3
  17. data/lib/isodoc/presentation_function/inline.rb +5 -1
  18. data/lib/isodoc/presentation_function/section.rb +9 -0
  19. data/lib/isodoc/presentation_xml_convert.rb +2 -0
  20. data/lib/isodoc/version.rb +1 -1
  21. data/lib/isodoc/word_function/inline.rb +2 -2
  22. data/lib/isodoc/word_function/postprocess.rb +38 -80
  23. data/lib/isodoc/word_function/postprocess_cover.rb +55 -0
  24. data/lib/isodoc/word_function/table.rb +10 -0
  25. data/lib/isodoc/xref.rb +1 -0
  26. data/lib/isodoc/xref/xref_counter.rb +44 -12
  27. data/lib/isodoc/xref/xref_gen.rb +18 -0
  28. data/lib/isodoc/xref/xref_sect_gen.rb +34 -27
  29. data/spec/isodoc/blocks_spec.rb +26 -73
  30. data/spec/isodoc/cleanup_spec.rb +0 -1
  31. data/spec/isodoc/inline_spec.rb +14 -14
  32. data/spec/isodoc/metadata_spec.rb +3 -1
  33. data/spec/isodoc/postproc_spec.rb +441 -3
  34. data/spec/isodoc/presentation_xml_spec.rb +5 -5
  35. data/spec/isodoc/table_spec.rb +28 -0
  36. data/spec/isodoc/xref_spec.rb +455 -2
  37. metadata +9 -8
@@ -37,7 +37,7 @@ it "localises numbers in MathML" do
37
37
 
38
38
  <preface>
39
39
  <p>
40
- <stem type='MathML'>30,000</stem>
40
+ 30,000
41
41
  <stem type='MathML'>
42
42
  <math xmlns='http://www.w3.org/1998/Math/MathML'>
43
43
  <mi>P</mi>
@@ -248,7 +248,7 @@ end
248
248
 
249
249
  <preface>
250
250
  <p>
251
- <stem type='MathML'>30,000</stem>
251
+ 30,000
252
252
  <stem type='MathML'>
253
253
  <math xmlns='http://www.w3.org/1998/Math/MathML'>
254
254
  <mi>P</mi>
@@ -382,7 +382,7 @@ it "localises numbers in MathML in French" do
382
382
  <language>fr</language>
383
383
  </bibdata>
384
384
  <preface>
385
- <p><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mn>30000</mn></math></stem>
385
+ <p><math xmlns="http://www.w3.org/1998/Math/MathML"><mn>30000</mn></math>
386
386
  <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>
387
387
  </preface>
388
388
  </iso-standard>
@@ -395,7 +395,7 @@ it "localises numbers in MathML in French" do
395
395
 
396
396
  <preface>
397
397
  <p>
398
- <stem type='MathML'>30&#x202F;000</stem>
398
+ 30&#x202F;000
399
399
  <stem type='MathML'>
400
400
  <math xmlns='http://www.w3.org/1998/Math/MathML'>
401
401
  <mi>P</mi>
@@ -506,7 +506,7 @@ it "customises localisation of numbers" do
506
506
 
507
507
  <preface>
508
508
  <p>
509
- <stem type='MathML'>30'000</stem>
509
+ 30'000
510
510
  <stem type='MathML'>
511
511
  <math xmlns='http://www.w3.org/1998/Math/MathML'>
512
512
  <mi>P</mi>
@@ -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>
@@ -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