From d010fcc91719e391bde6e96f0ec7564ff92f0b35 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 13 Oct 2021 09:03:25 +0200 Subject: [PATCH 01/21] =?UTF-8?q?Initialisation=20(avant=20impl=C3=A9menta?= =?UTF-8?q?tion=20des=20=C3=A9num=C3=A9rations)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 152 ++++++ sample.md | 27 + sampledocs/docx/[Content_Types].xml | 2 + sampledocs/docx/_rels/.rels | 2 + .../docx/customXml/_rels/item1.xml.rels | 2 + sampledocs/docx/customXml/item1.xml | 1 + sampledocs/docx/customXml/itemProps1.xml | 2 + sampledocs/docx/docProps/app.xml | 2 + sampledocs/docx/docProps/core.xml | 2 + sampledocs/docx/testref.docx | Bin 0 -> 16063 bytes sampledocs/docx/word/_rels/document.xml.rels | 2 + sampledocs/docx/word/document.xml | 2 + sampledocs/docx/word/endnotes.xml | 2 + sampledocs/docx/word/fontTable.xml | 2 + sampledocs/docx/word/footnotes.xml | 2 + sampledocs/docx/word/settings.xml | 2 + sampledocs/docx/word/styles.xml | 2 + sampledocs/docx/word/stylesWithEffects.xml | 2 + sampledocs/docx/word/theme/theme1.xml | 2 + sampledocs/docx/word/webSettings.xml | 2 + sampledocs/docx/~$estref.docx | Bin 0 -> 162 bytes sampledocs/filter-docx/[Content_Types].xml | 1 + sampledocs/filter-docx/_rels/.rels | 1 + sampledocs/filter-docx/docProps/app.xml | 18 + sampledocs/filter-docx/docProps/core.xml | 1 + sampledocs/filter-docx/docProps/custom.xml | 1 + sampledocs/filter-docx/test.docx | Bin 0 -> 10472 bytes .../filter-docx/word/_rels/document.xml.rels | 1 + .../filter-docx/word/_rels/footnotes.xml.rels | 1 + sampledocs/filter-docx/word/comments.xml | 1 + sampledocs/filter-docx/word/document.xml | 1 + sampledocs/filter-docx/word/fontTable.xml | 52 ++ sampledocs/filter-docx/word/footnotes.xml | 6 + sampledocs/filter-docx/word/numbering.xml | 1 + sampledocs/filter-docx/word/settings.xml | 46 ++ sampledocs/filter-docx/word/styles.xml | 467 ++++++++++++++++++ sampledocs/filter-docx/word/theme/theme1.xml | 2 + sampledocs/filter-docx/word/webSettings.xml | 5 + sampledocs/odt/META-INF/manifest.xml | 11 + sampledocs/odt/Thumbnails/thumbnail.png | Bin 0 -> 570 bytes sampledocs/odt/content.xml | 2 + sampledocs/odt/manifest.rdf | 18 + sampledocs/odt/meta.xml | 2 + sampledocs/odt/mimetype | 1 + sampledocs/odt/settings.xml | 2 + sampledocs/odt/styles.xml | 2 + sampledocs/odt/testref.odt | Bin 0 -> 9757 bytes sampledocs/pandoc-docx/[Content_Types].xml | 1 + sampledocs/pandoc-docx/_rels/.rels | 1 + sampledocs/pandoc-docx/docProps/app.xml | 18 + sampledocs/pandoc-docx/docProps/core.xml | 1 + sampledocs/pandoc-docx/docProps/custom.xml | 1 + sampledocs/pandoc-docx/test.docx | Bin 0 -> 10296 bytes .../pandoc-docx/word/_rels/document.xml.rels | 1 + .../pandoc-docx/word/_rels/footnotes.xml.rels | 1 + sampledocs/pandoc-docx/word/comments.xml | 1 + sampledocs/pandoc-docx/word/document.xml | 1 + sampledocs/pandoc-docx/word/fontTable.xml | 52 ++ sampledocs/pandoc-docx/word/footnotes.xml | 101 ++++ sampledocs/pandoc-docx/word/numbering.xml | 1 + sampledocs/pandoc-docx/word/settings.xml | 46 ++ sampledocs/pandoc-docx/word/styles.xml | 467 ++++++++++++++++++ sampledocs/pandoc-docx/word/theme/theme1.xml | 2 + sampledocs/pandoc-docx/word/webSettings.xml | 5 + sampledocs/testref.odt | Bin 0 -> 8830 bytes test.md | 16 + text-crossrefs.lua | 458 +++++++++++++++++ 67 files changed, 2029 insertions(+) create mode 100644 README.md create mode 100644 sample.md create mode 100644 sampledocs/docx/[Content_Types].xml create mode 100644 sampledocs/docx/_rels/.rels create mode 100644 sampledocs/docx/customXml/_rels/item1.xml.rels create mode 100644 sampledocs/docx/customXml/item1.xml create mode 100644 sampledocs/docx/customXml/itemProps1.xml create mode 100644 sampledocs/docx/docProps/app.xml create mode 100644 sampledocs/docx/docProps/core.xml create mode 100755 sampledocs/docx/testref.docx create mode 100644 sampledocs/docx/word/_rels/document.xml.rels create mode 100644 sampledocs/docx/word/document.xml create mode 100644 sampledocs/docx/word/endnotes.xml create mode 100644 sampledocs/docx/word/fontTable.xml create mode 100644 sampledocs/docx/word/footnotes.xml create mode 100644 sampledocs/docx/word/settings.xml create mode 100644 sampledocs/docx/word/styles.xml create mode 100644 sampledocs/docx/word/stylesWithEffects.xml create mode 100644 sampledocs/docx/word/theme/theme1.xml create mode 100644 sampledocs/docx/word/webSettings.xml create mode 100644 sampledocs/docx/~$estref.docx create mode 100644 sampledocs/filter-docx/[Content_Types].xml create mode 100644 sampledocs/filter-docx/_rels/.rels create mode 100644 sampledocs/filter-docx/docProps/app.xml create mode 100644 sampledocs/filter-docx/docProps/core.xml create mode 100644 sampledocs/filter-docx/docProps/custom.xml create mode 100644 sampledocs/filter-docx/test.docx create mode 100644 sampledocs/filter-docx/word/_rels/document.xml.rels create mode 100644 sampledocs/filter-docx/word/_rels/footnotes.xml.rels create mode 100644 sampledocs/filter-docx/word/comments.xml create mode 100644 sampledocs/filter-docx/word/document.xml create mode 100644 sampledocs/filter-docx/word/fontTable.xml create mode 100644 sampledocs/filter-docx/word/footnotes.xml create mode 100644 sampledocs/filter-docx/word/numbering.xml create mode 100644 sampledocs/filter-docx/word/settings.xml create mode 100644 sampledocs/filter-docx/word/styles.xml create mode 100644 sampledocs/filter-docx/word/theme/theme1.xml create mode 100644 sampledocs/filter-docx/word/webSettings.xml create mode 100644 sampledocs/odt/META-INF/manifest.xml create mode 100644 sampledocs/odt/Thumbnails/thumbnail.png create mode 100644 sampledocs/odt/content.xml create mode 100644 sampledocs/odt/manifest.rdf create mode 100644 sampledocs/odt/meta.xml create mode 100644 sampledocs/odt/mimetype create mode 100644 sampledocs/odt/settings.xml create mode 100644 sampledocs/odt/styles.xml create mode 100644 sampledocs/odt/testref.odt create mode 100644 sampledocs/pandoc-docx/[Content_Types].xml create mode 100644 sampledocs/pandoc-docx/_rels/.rels create mode 100644 sampledocs/pandoc-docx/docProps/app.xml create mode 100644 sampledocs/pandoc-docx/docProps/core.xml create mode 100644 sampledocs/pandoc-docx/docProps/custom.xml create mode 100644 sampledocs/pandoc-docx/test.docx create mode 100644 sampledocs/pandoc-docx/word/_rels/document.xml.rels create mode 100644 sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels create mode 100644 sampledocs/pandoc-docx/word/comments.xml create mode 100644 sampledocs/pandoc-docx/word/document.xml create mode 100644 sampledocs/pandoc-docx/word/fontTable.xml create mode 100644 sampledocs/pandoc-docx/word/footnotes.xml create mode 100644 sampledocs/pandoc-docx/word/numbering.xml create mode 100644 sampledocs/pandoc-docx/word/settings.xml create mode 100644 sampledocs/pandoc-docx/word/styles.xml create mode 100644 sampledocs/pandoc-docx/word/theme/theme1.xml create mode 100644 sampledocs/pandoc-docx/word/webSettings.xml create mode 100644 sampledocs/testref.odt create mode 100644 test.md create mode 100644 text-crossrefs.lua diff --git a/README.md b/README.md new file mode 100644 index 0000000..b4c2037 --- /dev/null +++ b/README.md @@ -0,0 +1,152 @@ +# text-crossrefs: getting references to page and note numbers in Pandoc + +This filters aims at extending Pandoc's cross-referencing +capacities by enabling automatic references to any piece of text +by either its page or, whenever it applies, its note number. It +currently supports the following target formats: + + * context + * docx + * latex + * odt + * opendocument + +It doesn't permit to refer to references in other files: if you want to do this, use text-extrefs. + +N.-B.: When opening for the first time a DOCX or ODT/Opendocument file produced by Pandoc with text-crossrefs, you probably will have to refresh the fields in order to get the correct values. In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. + +## Usage + +### Basics + +Mark the span of text you want to refer to later with an +identifier composed of alphanumeric characters, periods, colons, underscores and hyphens: + +``` markdown +Émile Gaboriau published [_L'Affaire Lerouge_ in +1866]{#publication}.[^1] + +[^1]: It is a very [fine piece of literature]{#my-evaluation}. + +[It was very popular.]{#reception} +``` + +You can refer to it using another span with class `ref` containing +the target's identifier. If the targetted span is part of a +footnote, you can refer to it either by page or by note number according to +the value of the `type` attribute (defaults to `page`). For instance, this: + +``` markdown +See [publication]{.ref} for the publication date. I gave my +opinion in [my-evaluation]{.ref type=note}, [my-evaluation]{.ref}. +``` + +will render in LaTeX output: + +``` tex +See p. \pageref{publication} for the publication date. I expressed +my thoughts about it in \ref{my-evaluation}, +p. \pageref{my-evaluation}. +``` + +If you want to give a reference by note and page number like in the example above, you can also use the following shorthand: + +```md +[my-evaluation]{.ref type=pagenote} +``` + +You can refer to headers as well using either explicit or automatically generated identifiers (see Pandoc user’s guide). + +### Page ranges + +You can refer to a page range like this: + +``` markdown +If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.ref}. +``` + +The separator (here `>`) can be set to any string composed of characters other than alphanumeric, period, colon, underscore, hyphen and space. + +In LaTeX and ConTeXt output, the page range will be printed as a simple page reference if the page numbers are identical. You can provide your own definition of the macro `\tcrfpagerangeref{}{}` in the preamble. In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by the means of automatic search and replace with regular expressions. + +## Enumerations + +Rather + +## Customization + +The following metadata fields can be set as strings: + + * `tcrf-page-prefix`: + * “page” prefix; + * defaults to `p. `. + * `tcrf-pages-prefix`: + * “pages” prefix; + * defaults to `p. `. + * `tcrf-note-prefix`: + * “note” prefix; + * defaults to `n. `. + * `tcrf-pagenote-separator`: + * the separator between the references when `type` is set to `pagenote`; + * defaults to `, `. + * `tcrf-pagenote-at-end`: + * the string printed at the end of a pagenote reference; + * defaults to an empty string, can be used to achieve something like *n. 3 (p. 5)*. + * `tcrf-pagenote-order`: + * the order in which the references to note and page are printed; + * defaults to `pagefirst`, can be set to `notefirst`. + * `tcrf-references-range-separator`: + * the string used to separate two references in a reference span; can be composed of any character not authorized in an identifier other than space or tab; + * defaults to `>`. + * `tcrf-range-separator`: + * the string inserted between to page numbers in a range; + * defaults to `-`. + * `tcrf-references-enum-separator`: + * the string used to separate the elements of an enumeration in a reference span; can be composed of any character not authorized in an identifier other than space or tab; + * defaults to `;`. + * `tcrf-enum-separator`: + * the string inserted between two elements (but the two last ones) in an enumeration; + * defaults to a comma followed by a space. + * `tcrf-before-last-in-enum`: + * the string inserted between the two last elements in an enumeration; + * defaults to `and` surrounded with spaces. + * `tcrf-only-explicit-labels`: + * set it to `true` if you want that _tcrf_ handle only spans with class `label`; + * defaults to `false`. + * `tcrf-default-info-type`: + * default value for the `type` attribute (`note`, `page` or `pagenote`); + * defaults to `page`. + * `tcrf-filelabel-ref-separator`: + * only useful in conjunction with the text-exrefs filter; + * separator between external files' labels and references; + * defaults to `::`. + +## Compatibility with other filters + +Text-crossrefs must be run after all other filters that can create, delete or move +footnotes, like citeproc. + +In order to give and identifier to a note produced by a citation inside square brackets, the span should not include the citation key, the locator or the `;` +delimiter. If it is placed immediatly after the locator, this should be surrounded by curly brackets. So this should work: + + ``` markdown + [@Jones1973, p. 5-70; @Doe2004[]{#jones-doe}] + + [@Jones1973, p. 5-70; [it was elaborated upon]{#further-elaboration} by @Doe2004] + + [@Jones1973, {p. 5-70}[]{#ref-to-jones}; @Doe2004] + ``` + +not that: + + ``` markdown + [[@Jones1973, p. 5-70]{#ref-to-jones}; @Doe2004] + + [[@Jones1973, p. 5-70; @Doe2004]{#jones-doe}] + + [@Jones1973, p. 5-70[]{#ref-to-jones}; @Doe2004] + ``` + +You can set classes and attributes to your spans other than those defined by text-crossrefs (for instance `[some text]{#to-be-referred-to .highlighted color=red}` or `[reference]{.ref color=red}`). No span is removed. + +Text-crossrefs is fully compatible with text-extrefs. Whenever possible, when a metadata is not set for text-extrefs, its value is taken from its text-crossrefs equivalent, so that you don't need to duplicate similar variables. diff --git a/sample.md b/sample.md new file mode 100644 index 0000000..13c7f35 --- /dev/null +++ b/sample.md @@ -0,0 +1,27 @@ +--- +tcrf-pagenote-separator: '\ (' +tcrf-pagenote-at-end: ')' +--- + +Émile Gaboriau published [_L'Affaire Lerouge_ in +1866]{#publication}.[^1] + +[^1]: It is a very [fine piece of literature]{#my-evaluation}. + +[It was very popular.]{#reception} + +See [publication]{.ref} for the publication date. I expressed +my thoughts about it in [my-evaluation]{.ref type=pagenote}. + +If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.ref}. + +Here are some precisions.[^2] + +[^2]: [Whatever format]{#format} you choose, you can [refer to a note]{#refer-to-note} by the identifier of [any of its spans. You can even [nest spans]{#nested-spans}!]{#which-identifier} + +I want to refer to a note: + + * How can I refer to a note by its number? → See [refer-to-note]{.ref}. + * What formats are supported? → See [format]{.ref}. + * What if the note contains multiple spans with identifiers? → See [which-identifier]{.ref}. + * What happens if a span in contained in a span? → See [nested-spans]{.ref}. diff --git a/sampledocs/docx/[Content_Types].xml b/sampledocs/docx/[Content_Types].xml new file mode 100644 index 0000000..5f21f33 --- /dev/null +++ b/sampledocs/docx/[Content_Types].xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/_rels/.rels b/sampledocs/docx/_rels/.rels new file mode 100644 index 0000000..fdd8c4f --- /dev/null +++ b/sampledocs/docx/_rels/.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/customXml/_rels/item1.xml.rels b/sampledocs/docx/customXml/_rels/item1.xml.rels new file mode 100644 index 0000000..a9c831d --- /dev/null +++ b/sampledocs/docx/customXml/_rels/item1.xml.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/customXml/item1.xml b/sampledocs/docx/customXml/item1.xml new file mode 100644 index 0000000..766e845 --- /dev/null +++ b/sampledocs/docx/customXml/item1.xml @@ -0,0 +1 @@ + diff --git a/sampledocs/docx/customXml/itemProps1.xml b/sampledocs/docx/customXml/itemProps1.xml new file mode 100644 index 0000000..ebcaae9 --- /dev/null +++ b/sampledocs/docx/customXml/itemProps1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/docProps/app.xml b/sampledocs/docx/docProps/app.xml new file mode 100644 index 0000000..c0832c6 --- /dev/null +++ b/sampledocs/docx/docProps/app.xml @@ -0,0 +1,2 @@ + +31847Microsoft Office Word011falsefalse54falsefalse14.0000 \ No newline at end of file diff --git a/sampledocs/docx/docProps/core.xml b/sampledocs/docx/docProps/core.xml new file mode 100644 index 0000000..5cf7d66 --- /dev/null +++ b/sampledocs/docx/docProps/core.xml @@ -0,0 +1,2 @@ + +Bastien DUMONTBastien DUMONT22021-05-22T09:07:00Z2021-05-22T09:17:00Z \ No newline at end of file diff --git a/sampledocs/docx/testref.docx b/sampledocs/docx/testref.docx new file mode 100755 index 0000000000000000000000000000000000000000..93e23f83f6b0e90314f8e92172a9e6bee00dca8d GIT binary patch literal 16063 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 Q4GKUHh!hohfBf}-04SzC)Bpeg literal 0 HcmV?d00001 diff --git a/sampledocs/docx/word/_rels/document.xml.rels b/sampledocs/docx/word/_rels/document.xml.rels new file mode 100644 index 0000000..ebee045 --- /dev/null +++ b/sampledocs/docx/word/_rels/document.xml.rels @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/document.xml b/sampledocs/docx/word/document.xml new file mode 100644 index 0000000..6b6295c --- /dev/null +++ b/sampledocs/docx/word/document.xml @@ -0,0 +1,2 @@ + +Référence à la note : NOTEREF _Ref72574139 \h 1 \ No newline at end of file diff --git a/sampledocs/docx/word/endnotes.xml b/sampledocs/docx/word/endnotes.xml new file mode 100644 index 0000000..f95e6f1 --- /dev/null +++ b/sampledocs/docx/word/endnotes.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/fontTable.xml b/sampledocs/docx/word/fontTable.xml new file mode 100644 index 0000000..e187e55 --- /dev/null +++ b/sampledocs/docx/word/fontTable.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/footnotes.xml b/sampledocs/docx/word/footnotes.xml new file mode 100644 index 0000000..dbe8778 --- /dev/null +++ b/sampledocs/docx/word/footnotes.xml @@ -0,0 +1,2 @@ + + La note ici \ No newline at end of file diff --git a/sampledocs/docx/word/settings.xml b/sampledocs/docx/word/settings.xml new file mode 100644 index 0000000..425f092 --- /dev/null +++ b/sampledocs/docx/word/settings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/styles.xml b/sampledocs/docx/word/styles.xml new file mode 100644 index 0000000..4c27df6 --- /dev/null +++ b/sampledocs/docx/word/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/stylesWithEffects.xml b/sampledocs/docx/word/stylesWithEffects.xml new file mode 100644 index 0000000..25cd1cb --- /dev/null +++ b/sampledocs/docx/word/stylesWithEffects.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/theme/theme1.xml b/sampledocs/docx/word/theme/theme1.xml new file mode 100644 index 0000000..f292589 --- /dev/null +++ b/sampledocs/docx/word/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/word/webSettings.xml b/sampledocs/docx/word/webSettings.xml new file mode 100644 index 0000000..88ba7f2 --- /dev/null +++ b/sampledocs/docx/word/webSettings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/docx/~$estref.docx b/sampledocs/docx/~$estref.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d71b4059cf8e320db8f88d5da6512f19d4eebcd GIT binary patch literal 162 zcmd;cN-QqPOwChp3H9~&3t=D*@G&?sBr+5;lrUs6q%!0&C@{D%gfjRt_%rx15Nigy UO^iSR7-leA%)np)#8!(L0J)D0D*ylh literal 0 HcmV?d00001 diff --git a/sampledocs/filter-docx/[Content_Types].xml b/sampledocs/filter-docx/[Content_Types].xml new file mode 100644 index 0000000..f8e3f00 --- /dev/null +++ b/sampledocs/filter-docx/[Content_Types].xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/_rels/.rels b/sampledocs/filter-docx/_rels/.rels new file mode 100644 index 0000000..ae7b3ed --- /dev/null +++ b/sampledocs/filter-docx/_rels/.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/app.xml b/sampledocs/filter-docx/docProps/app.xml new file mode 100644 index 0000000..1764f14 --- /dev/null +++ b/sampledocs/filter-docx/docProps/app.xml @@ -0,0 +1,18 @@ + + + 83 + false + false + 12 + 12.0000 + false + Microsoft Word 12.0.0 + 583 + + 0 + 6 + false + 475 + 8 + 1 + \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/core.xml b/sampledocs/filter-docx/docProps/core.xml new file mode 100644 index 0000000..6336e34 --- /dev/null +++ b/sampledocs/filter-docx/docProps/core.xml @@ -0,0 +1 @@ +2021-05-23T17:28:34Z2021-05-23T17:28:34Z \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/custom.xml b/sampledocs/filter-docx/docProps/custom.xml new file mode 100644 index 0000000..bd63c79 --- /dev/null +++ b/sampledocs/filter-docx/docProps/custom.xml @@ -0,0 +1 @@ +) ( \ No newline at end of file diff --git a/sampledocs/filter-docx/test.docx b/sampledocs/filter-docx/test.docx new file mode 100644 index 0000000000000000000000000000000000000000..93b7cc53dac1da3b48a89ceeb1ba459ef805b4ca GIT binary patch literal 10472 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 literal 0 HcmV?d00001 diff --git a/sampledocs/filter-docx/word/_rels/document.xml.rels b/sampledocs/filter-docx/word/_rels/document.xml.rels new file mode 100644 index 0000000..b5a18af --- /dev/null +++ b/sampledocs/filter-docx/word/_rels/document.xml.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/_rels/footnotes.xml.rels b/sampledocs/filter-docx/word/_rels/footnotes.xml.rels new file mode 100644 index 0000000..bee2b8c --- /dev/null +++ b/sampledocs/filter-docx/word/_rels/footnotes.xml.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/comments.xml b/sampledocs/filter-docx/word/comments.xml new file mode 100644 index 0000000..229ad01 --- /dev/null +++ b/sampledocs/filter-docx/word/comments.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/document.xml b/sampledocs/filter-docx/word/document.xml new file mode 100644 index 0000000..24a8f34 --- /dev/null +++ b/sampledocs/filter-docx/word/document.xml @@ -0,0 +1 @@ +Émile Gaboriau published L’Affaire Lerouge in 1866.It was very popular.See p.  PAGEREF publication_pageNb \h 000 for the publication date. I expressed my thoughts about it p.  PAGEREF my-evaluation_pageNb \h 000 (n.  NOTEREF my-evaluation_noteNb \h 000). \ No newline at end of file diff --git a/sampledocs/filter-docx/word/fontTable.xml b/sampledocs/filter-docx/word/fontTable.xml new file mode 100644 index 0000000..fce61de --- /dev/null +++ b/sampledocs/filter-docx/word/fontTable.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/footnotes.xml b/sampledocs/filter-docx/word/footnotes.xml new file mode 100644 index 0000000..b692070 --- /dev/null +++ b/sampledocs/filter-docx/word/footnotes.xml @@ -0,0 +1,6 @@ + + + + + + It is a very fine piece of literature. \ No newline at end of file diff --git a/sampledocs/filter-docx/word/numbering.xml b/sampledocs/filter-docx/word/numbering.xml new file mode 100644 index 0000000..06fb610 --- /dev/null +++ b/sampledocs/filter-docx/word/numbering.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/settings.xml b/sampledocs/filter-docx/word/settings.xml new file mode 100644 index 0000000..2428379 --- /dev/null +++ b/sampledocs/filter-docx/word/settings.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/styles.xml b/sampledocs/filter-docx/word/styles.xml new file mode 100644 index 0000000..723bc8d --- /dev/null +++ b/sampledocs/filter-docx/word/styles.xml @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/theme/theme1.xml b/sampledocs/filter-docx/word/theme/theme1.xml new file mode 100644 index 0000000..a6f7240 --- /dev/null +++ b/sampledocs/filter-docx/word/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/filter-docx/word/webSettings.xml b/sampledocs/filter-docx/word/webSettings.xml new file mode 100644 index 0000000..570ca8e --- /dev/null +++ b/sampledocs/filter-docx/word/webSettings.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/sampledocs/odt/META-INF/manifest.xml b/sampledocs/odt/META-INF/manifest.xml new file mode 100644 index 0000000..6d7e2e5 --- /dev/null +++ b/sampledocs/odt/META-INF/manifest.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/odt/Thumbnails/thumbnail.png b/sampledocs/odt/Thumbnails/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..7754e740cabf24daa46933b18a44f402c9f1ace4 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^TNxM_8911MtV4f~zXVdo0X`wFJv}`WCQO(;d-meR zi&w8+y=BXmUAuN2K79DhnKPF!U%qqa&f~|AU%!6+<;$0U|Na3r{r~@e^7QMXK(h{c zx;TbZ+#O$7-nH!7r>oCq{k|6-y|;$vRkrQholEY%Uz+F6+b<)p*=F3j^qk?|C-GD|%y}g!`$b&uos(scgMgUcdSBkF$^bi~jPw ztGRkUqn^jSeB1Ti_X75wPl|ci^HSrbptFYIGvg;0f~+1H>)fC7(*KI()~RL74o^Kl z=akpdB>|V$=w6+7YHQK_?ZN-!*0W6CnD%miTHZ(1@8{hSt{()fzoxG$Z2m=k?5no@ z|8VEbs+iqZ4a4LY_uY(td|N%`+TBwY?tF$v=}B>?mb^F`R@)eUKu=H{an^LB{Ts5Z +1La note iciRéférence à la note : 300p. 300Le marque-page est p. 300. diff --git a/sampledocs/odt/manifest.rdf b/sampledocs/odt/manifest.rdf new file mode 100644 index 0000000..927e206 --- /dev/null +++ b/sampledocs/odt/manifest.rdf @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/sampledocs/odt/meta.xml b/sampledocs/odt/meta.xml new file mode 100644 index 0000000..38ec226 --- /dev/null +++ b/sampledocs/odt/meta.xml @@ -0,0 +1,2 @@ + +Bastien Dumont2021-05-22T11:38:49.9363886482021-05-22T23:19:47.946633474Bastien DumontPT3M32S2LibreOffice/7.1.3.2$Linux_X86_64 LibreOffice_project/10$Build-2 \ No newline at end of file diff --git a/sampledocs/odt/mimetype b/sampledocs/odt/mimetype new file mode 100644 index 0000000..2e95b81 --- /dev/null +++ b/sampledocs/odt/mimetype @@ -0,0 +1 @@ +application/vnd.oasis.opendocument.text \ No newline at end of file diff --git a/sampledocs/odt/settings.xml b/sampledocs/odt/settings.xml new file mode 100644 index 0000000..7e29687 --- /dev/null +++ b/sampledocs/odt/settings.xml @@ -0,0 +1,2 @@ + +00764511996truefalseview2701129850076431199401false180falsefalsefalsefalsefalsetruetruetruetruetruefalse0falsefalsefalsetruefalsefalsetruefalsefalsefalsetruetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruefalsefalsefalsetrue01truefalsehigh-resolutiontruefalsefalsetruefalsetruetruefalsetruetrue455576truefalsetrue0falsefalsefalsetruefalsetruefalsefalsefalsefalsetruefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalse390281falsefalsefalsefalsefalsetruefalsetruetrue \ No newline at end of file diff --git a/sampledocs/odt/styles.xml b/sampledocs/odt/styles.xml new file mode 100644 index 0000000..88f85a9 --- /dev/null +++ b/sampledocs/odt/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/odt/testref.odt b/sampledocs/odt/testref.odt new file mode 100644 index 0000000000000000000000000000000000000000..b10362ba7f684755da00ce77727a83f9e9254026 GIT binary patch literal 9757 zcmbt)1z45K_C5_#5`su~gS3>=-Ga2hX49~#4Y=vk&|k!CtWC^K9qj=Q z<~G(~j)%&B_J$PQ?oIrg-T)xb*vc3xY-9fyk_5kzG_kS)I2hlQ`gL^oe^yqn!X0Bds-W3U4&1Y}hbD`(Nkh81we=Ra1XxdT)cPi01ZEaCz) zMal=~Or4`5ZLQxO4ooyGrx1ADvv@W_ZgaLdj8BI$##=m%=4pax@R86L)ZK!azAi9( zz%#3uIff;J8A|CHc+^s&iAw(}gjQCKL|mrYfwbJtaR)}`TS;Q`cFRiy2=Gyrqb+G& zW<0!fqhENIt~+k~2QjwyOvbqrGn3>}9cAXV3_bW&70Mf*Y#DkgjX>LYBuum>;BYao zo`M)wQpUWd+Pr=EU|gQ2blCKoVTN7-VX3CBT^I|Fagi^4TPuBpD55gD zttKua!nb*dIHqvLR_mU`-!-&-frN>-dE$3$T~HgW$Yb4m&#}d8Z}@ATr%&s{k>hpe zlnm-9vJ++$7?>7bJ?iCg1ejVc*V=lX`^!H?QpO&cap1Nd@1(64J z8&-UqOpb=YEUTjh^*eV z)eiG}ZGM$_ZV^rxfUnKrlh=h+i>VzZg!>NRYfmfdB?2=|>60L_2u~nPl*z4upNi<6 zOtW+no&=+L_!q1bX_c0g6L$c@VaQN6IBDK|HJ%mQh(wyv0n45ZHtDv~qJ6<^TUU(S zXApxUw$qI<^i$5~tC78{TfCLiL&!!(-n4Y#j36wl(0vKaE7Nj7F^`hfoe?@oTx87!}Z=wb(lDIXcGO3sP-Y%{o%n zN19zB$iCE}Yb~i-K2xTn>-G_MAO?7P3N>%pG!p8{gtm|mGLsg8%2{fbJ|2oy8ECxR z+)j9#xnuH4_n7=a5i8Et}nDj^YL;)@LMwx%&bFN&DUE5Q1yrzNzh#dfT*PLxqqq+AUv z(&0R+R3cuabrz1>lOFdeLR);C=TlUB?tBw%oA}zfcS(KX{v^4Q10@nHe7=H7VOIWah$cB3#^^BFXwl zFw0Z30Qz#L9gbuh0pGLOehoaw0Gb7v)Q?QCR&DI}6MRH>tFcnh6fVch>yapw4eATY zRP?T-(U#S`7l9B}YNdmX7OFxLL{ON*XmBmv`F1P9wF)rl9>=$lcAHX0n-z$(@<{B5 z%l#RO9cmGV>5y|>R#c(a{ucouZXR3R?z~+Ye=E!66+-i-@=2C2ltZ zm^HL#g7>nC!a?XqHnng$tp)g#$9u&NP*8r&K4YgETTO zMOr~HV#UdAb7q?N!{<;+Mn0LTR~}7=lXT%lT8J7a=}R@i&Rd=ABGYSRxE?*)1TbEE z38su9k+!Emy0MXaVx{6f%SV8;31;u2j;<>_*otqTdYc);dFSP`zM_b0iDJ?#*q?jN z_w-+NW;Tup%{so&Qz<%hulY0U+Z&k-#SU5fvSIlhIHL}vR(R{7qOK{&fv28$TcTH> z@_b^YX>unCta+MKw38mUS}Iw&7*;hqZ@1MKYM)WUVBU`-8y8(OmdCX12Xd2pF=euw zQUfVC>w1lG&x3Ir){dDseKUFJ(O^SFzH{0!^{N)Ws|0$eh+P-F0D%1*vcXe1!{6oC^X77Ff7)v2cszvy|d-vbyeHG$K_nq@BdJ?yD`izZSw;~hK+y@{1)T(e#ri9Pt z-M59L2y(6nAn%IuHX)6QpGr6{Hx~q#&EsS<1b8$*8CJLNyP5tP%tO}x$+9#d zd?E{TcU-l`>~Y7cM)Flv`3da_>sIP)J3tnw_&(?iVRpijf|kClV^$L;O=%F*lLK&OL-!1td&Lctsw49>R309#utbKoC$ zxQ9;GMyxgfusN93#@5){$Oh;Ly@)ulIv7J7ZpRfTkVi`d}P(EYCAl-X;xgkmbN6KQc>*D8OrGtk$+x*ow7Y#vX2QVSaAR0xhKNiyEeV z;|I^ytJss3E5T zOrM; zHUG;Yy`hCB4yUJ&`Gtha0`wE*!rAYl1v^z#mY<(4FWXf^^h#ONc;+=L8m2WbF78h? z73#8{mfySnlogkI4kmw`lk+mMo0DB^qi%iX?wv~Hl4t78XI};MZQYGT&=u6RzOCGU z@GUDWO^x;L!=e!xE5#ZN;E2eXBCSV5%;D_BYV5q3Cjwt`>B1@Ym%eSMNn};dT`?b4 zr0~K~Tw5jHurL*JhxPGU;+oa5aYsuNOnzE#$H`vN`tUxo97=&Ges4bNk@$5+%S93W z+R#>;q=Kp#IvvLa*{3}9pLP{qd`aEce(&lEaj1Iy!O{EEmrEYXPXGS=6R{!CX*R zE+YcB)+TwBCgue-S6F`bsL8d~wuV79yel&i5(nIkjA4kJryLi^6-svg7H37Q86PGD)^J7yc8tyULV`W`dY_PcrRCrq_r-RSc}um zXvsNzh1%D@ldR5`zT7N{OO=hROWh=mmtEMx;2s|Xm(WWd!yQk9i75-aP#W|^5Svss zaed!>wIUZB1u|}&p9&mJC3;L+n7g%B&7ztlMCq*ykWEZJXJg6!wbZ?pt_@fq@3|X- zw{wH|IKT2&id4E{paDKZ4%rSuaSV}YZ^mabdIGZN@d&I20$#pJNn&=IOsbvl?vS>L zEuM-{lwP)7NXgMnciS<9a)wrOS=AsGOEfWY{%sR zV8mTt7&MFXpu4K_^{2yylyD8E)Z3gMtjT(1wGEStzhI}+;gn8WDgOk6ONj5I)@?&4 zS^#8UV?k{nwMB?dG4$|N(%D@PPT4+aTjN>qrc6MH?u19PP;O(LjTK-zx}$UN6J>&I z=K2%gsZ6+!>x5`H7EOHi-NFVDNt8jB6wVxsrve6rjjf&d^sBITei6I%Qt@}Ddfp%; z@98Jtq`@&_OIENwI7b{FvmV3?lPKjyN?999i@K|lN`n!9Sj8CoR5OkAeJ;LJh0JA% zvhy0Uo@Rhc-ht5@MkUhp)YPW=Pm`P{On0c|q-X9dbc_a0*v`*QTv!nW&hJpPxPauKBve3zYP27fUG`I4SiL!pMcST-&a{j7VPWVzJIa*m`9dxI-O4B50-TFdq zf#&msQFxihLw28}%f$X8k>dR=0Yz8m!0dK)GBXEyAd(hRJ%%aiz@DJA|5J3sC0mrS z(+bor3pKqFTgZ#v`3FP+eqy0C7~!;WOLwSG-p~^lANJb22*>6PFH#AEn!Gu0uo&>qb}Zyh7{dhPnPo z-5_KIu0SyrmhZW1vFq#0)*ISXi#h*=Hb44F;3FxSIx-PD1x(Gn27iGGY36YmFSwW> z-7E^VRHo9NB9QoauX>kR^^kuU1Xqk(Tr%5&Ut3bp@p-sjyZsckOv@6rVvi`h&aV2% z7(crkyk&W2wq69Xy>=;!r1Cp$=28-isFq}Rq@{w=g6G>rs~XkJHp6%I(?NWGXjr~d z13_PsO8D-nb_n9Bpihz=drDcL9v?@?V3bbqC_kd?=A{EcL}YR*4|ZxF>#6#Tb<)uX zIz~L)i+KY(5b2;9X{g_NV`Ka5qsUI3_AA%K{U9!5_IYYbR?d`NIzYc zu6ctp$BJM|mC?BxJzV?yEStxUMxMx}O2w1@rH6r?%QMRz28&H0%J>#8lhINGqUmGJ zA=E5>lccY@@apJk9+gu^(C2S8hTy-)kKceOQE#ytw_uC2SNF+CPD%C>Rju|mntMH> zm97zSpHcXTHp+&tCBijpKcf~SZJ$(xSi#0Uw2xKL2QO?@`EXFnjkf%KcGBUr?@+2z zwNV?1YG7p^W{f%GW5Mhc`D*{^yh19|i(U$AmUp|3MmeM@A%&6=A%TSi$sNaYtqaR7 z7uA~d)rvv8My*{!5lpPAS3UXqP2=!TXktXHeRg&Nzqp*{<#>#XE=$;fk%zEy}jw;0N zQn%-7dqmRdKy7YjhAnAC#mY=6?016uuA7mLU_CKA{4~Zq@svTJsa4H4hW6Z5Tk7l6yJ3;)m{b@htmNSm$CP!O>e7cO z>b-GYT=HgvQ_TXjusa*c7ofQYB0-?DbLwMYlxoVl!)K19c8=xt2dnvw?a!W~I5q}W z4T(4`v{8NWZelVmlPQ&a_J~cf@Yz^bfIv!TQ>S*OqU=O5B12LHAV3Jak4<$n-;9~C zbpE8&Cw4S0ZVtqlYI3lu7-KlH(gvJAD2M3*Fc);#d5bbUd0H^6E9~6hW_Q&SqI=gQ zDY#8~n5l1Qoj-iSAR%N3R?Rvo{zc^M#Z$|A(x0^qddMA|cbU&|F&X#8yqi?3;Z9!jKab)ITWvdeQuQ(@&Q`)w z5lC;;mRH7>QZj1M(B>zf0mg^*l%(k-A^oOb+z>XBQqenDZUp|^+O3;=tcFj z<<;Hi1v%+wiYx9%K7kKi)Q4yTCswr@@lbo`Yjxy;_cTi-%E*!o*_9FV;sQe8+W9&R z&;6M{v-vf)kJCPZ$5CtjoNuTEu6z@aN_|H@#BOpDVVEP&*M`bnWut;MTvS!n;IVf` z8@1dX(P z>DfgQzgdB`W(PpSo^1-Q$vfa|;NokEv?9EJ6rQGS>BAw?OzTC|5($%< zyP-5ejCz{|&D2eewqIq+U!pnOH}NKWD-*8%+NMZgf~R+$!?AgEQP;efCiF`hN##er z7Mq$+E@y&IH;T^|RVs=fk)A!LvUTt6UBWh%T&A!lcI1elUFNL-fS7stxC?~Djz*-5 z4~CP+-0D5R7A;B7+tc36>xsqTzh;`qK0$XvTjadtH1^Hz*H0<}7VCSU>5$@pQ@*At zhq1vTvG&!fz*??FCMa3GNCa&dv#x3m}ZY^c5~G-1hv+}fse!L( z00B{ZS?n@o>K=daCmxoeB{p?~-<~d~Lo&J$BLC>6dwEw{fc*V6at=w<)U{U?y#1=D z@CDLKfvD{O%fl{6o^vb!JeNcnRBbsdhU9h0=%8xD9Lr^*f?3N@cH9hC-IG z-@?pCTkUm?O01qn?{c(!Jy7cF*s&{HN=JEkR6oG&GNQ(f_qqD@hu&9}hkWR#7i9uI zTRNgJBO~YFw<0`S2DzkSdd{Of$JMG?S59qn)n)JPcnDu<%a9-nF7Q7X0757^@+aam zRW^@Nk0;WMMd)I?C46fX}?W}5YgnzVPhfnhG;<9uA7llqMdYW3D6n_`&@ zTS$U8&tJeS=R^4D=Wy0L0cqgPN29(^6cc7u;a^lV5Ond`fTJf=SaeX0^Rjfwj3_-M z_c6CY;_b!B(hs3P5gJDAJp_s zz<=&TENIQ}*O>T0Xa7?q!ds?E{s!qM1^!R5ZpWd=@33yr=KmD!wqvSV{l6N&N0( zfgekk+$+c1|EB6cNd##1@)pd$_o5%_f3!Cj?ynZ0-LhaET7JDjjNelJH*L7hv){A< z6XBNfTdeynr2o^5-|@INkqDrr-W#m$E#(s3Zr}H3m|xnTKKj>G+$L^rD))olmH(Up zD2;PV``;M)_uO-v=eVi863R&bU_Ji6=KoeUzp1$e1FHGoMfAU~`FlqGmq%{b&~Iu+ v!-N(OZdBC&f3)8&M%>g+4*hKAXKCW^=|+SG!1wQM@L=Sj1&&6N?{EJPYdxl* literal 0 HcmV?d00001 diff --git a/sampledocs/pandoc-docx/[Content_Types].xml b/sampledocs/pandoc-docx/[Content_Types].xml new file mode 100644 index 0000000..f8e3f00 --- /dev/null +++ b/sampledocs/pandoc-docx/[Content_Types].xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/_rels/.rels b/sampledocs/pandoc-docx/_rels/.rels new file mode 100644 index 0000000..ae7b3ed --- /dev/null +++ b/sampledocs/pandoc-docx/_rels/.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/app.xml b/sampledocs/pandoc-docx/docProps/app.xml new file mode 100644 index 0000000..1764f14 --- /dev/null +++ b/sampledocs/pandoc-docx/docProps/app.xml @@ -0,0 +1,18 @@ + + + 83 + false + false + 12 + 12.0000 + false + Microsoft Word 12.0.0 + 583 + + 0 + 6 + false + 475 + 8 + 1 + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/core.xml b/sampledocs/pandoc-docx/docProps/core.xml new file mode 100644 index 0000000..1c8cf8d --- /dev/null +++ b/sampledocs/pandoc-docx/docProps/core.xml @@ -0,0 +1 @@ +2021-05-22T21:17:30Z2021-05-22T21:17:30Z \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/custom.xml b/sampledocs/pandoc-docx/docProps/custom.xml new file mode 100644 index 0000000..3d9de2d --- /dev/null +++ b/sampledocs/pandoc-docx/docProps/custom.xml @@ -0,0 +1 @@ +/home/bdumont/Documents/Doctorat/Redaction/Metadonnees/FEUILLE-STYLE_These.csl \ No newline at end of file diff --git a/sampledocs/pandoc-docx/test.docx b/sampledocs/pandoc-docx/test.docx new file mode 100644 index 0000000000000000000000000000000000000000..4677c91315e21cdacc7c9f92ad896bfce3b79900 GIT binary patch literal 10296 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 literal 0 HcmV?d00001 diff --git a/sampledocs/pandoc-docx/word/_rels/document.xml.rels b/sampledocs/pandoc-docx/word/_rels/document.xml.rels new file mode 100644 index 0000000..b5a18af --- /dev/null +++ b/sampledocs/pandoc-docx/word/_rels/document.xml.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels b/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels new file mode 100644 index 0000000..bee2b8c --- /dev/null +++ b/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/comments.xml b/sampledocs/pandoc-docx/word/comments.xml new file mode 100644 index 0000000..229ad01 --- /dev/null +++ b/sampledocs/pandoc-docx/word/comments.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/document.xml b/sampledocs/pandoc-docx/word/document.xml new file mode 100644 index 0000000..0e2b5f8 --- /dev/null +++ b/sampledocs/pandoc-docx/word/document.xml @@ -0,0 +1 @@ +Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte. \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/fontTable.xml b/sampledocs/pandoc-docx/word/fontTable.xml new file mode 100644 index 0000000..fce61de --- /dev/null +++ b/sampledocs/pandoc-docx/word/fontTable.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/footnotes.xml b/sampledocs/pandoc-docx/word/footnotes.xml new file mode 100644 index 0000000..ba1176a --- /dev/null +++ b/sampledocs/pandoc-docx/word/footnotes.xml @@ -0,0 +1,101 @@ + + + + + + La note 1. + + + + + La note 2. + + + + + citation? + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. + + + + + La note 4. \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/numbering.xml b/sampledocs/pandoc-docx/word/numbering.xml new file mode 100644 index 0000000..06fb610 --- /dev/null +++ b/sampledocs/pandoc-docx/word/numbering.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/settings.xml b/sampledocs/pandoc-docx/word/settings.xml new file mode 100644 index 0000000..2428379 --- /dev/null +++ b/sampledocs/pandoc-docx/word/settings.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/styles.xml b/sampledocs/pandoc-docx/word/styles.xml new file mode 100644 index 0000000..723bc8d --- /dev/null +++ b/sampledocs/pandoc-docx/word/styles.xml @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/theme/theme1.xml b/sampledocs/pandoc-docx/word/theme/theme1.xml new file mode 100644 index 0000000..a6f7240 --- /dev/null +++ b/sampledocs/pandoc-docx/word/theme/theme1.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/webSettings.xml b/sampledocs/pandoc-docx/word/webSettings.xml new file mode 100644 index 0000000..570ca8e --- /dev/null +++ b/sampledocs/pandoc-docx/word/webSettings.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/sampledocs/testref.odt b/sampledocs/testref.odt new file mode 100644 index 0000000000000000000000000000000000000000..3cc51b6fdc34e2877c796e52df4fd3564d34a956 GIT binary patch literal 8830 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

e)x9h9A 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 literal 0 HcmV?d00001 diff --git a/test.md b/test.md new file mode 100644 index 0000000..8947f69 --- /dev/null +++ b/test.md @@ -0,0 +1,16 @@ +--- +tcrf-pagenote-separator: '\ (' +tcrf-pagenote-at-end: ')' +--- + +Émile Gaboriau published [_L'Affaire Lerouge_ in +1866]{#publication}.[^1] + +[^1]: It is a very [fine piece of literature]{#my-evaluation}. + +[It was very popular.]{#reception} + +See [publication]{.ref} for the publication date. I expressed +my thoughts about it [my-evaluation]{.ref type=pagenote}. + +Page range: [publication>reception]{.ref} diff --git a/text-crossrefs.lua b/text-crossrefs.lua new file mode 100644 index 0000000..f4a62f3 --- /dev/null +++ b/text-crossrefs.lua @@ -0,0 +1,458 @@ +-- TODO : permettre la citation de références multiples avec un seul préfixe +-- [ref-one, ref-two>ref-four, ref-three]{.ref} → pp. 1, 3-6 et 12 +-- Compléter README et test une fois que ce sera fait. + +-- Begin of initialization + +local IDENTIFIER_PATTERN = '[%w_.:-]+' +local RAW_ATTRIBUTE +local IS_LABEL_SET_BY_PANDOC +local LABEL_TEMPLATE +local NOTELABEL_TEMPLATE + +local function define_raw_attribute() + if FORMAT == 'native' then + RAW_ATTRIBUTE = pandoc.system.environment().TESTED_FORMAT + elseif FORMAT == 'docx' then + RAW_ATTRIBUTE = 'openxml' + elseif FORMAT == 'odt' or FORMAT == 'opendocument' then + RAW_ATTRIBUTE = 'opendocument' + elseif FORMAT == 'context' or FORMAT == 'latex' then + RAW_ATTRIBUTE = FORMAT + else + error(FORMAT .. + ' output not supported by text-crossrefs.lua.') + end +end + +local function define_label_template() + if RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then + IS_LABEL_SET_BY_PANDOC = true + elseif RAW_ATTRIBUTE == 'context' then + if PANDOC_VERSION < pandoc.types.Version('2.14') then + LABEL_TEMPLATE = '\\pagereference[{{label}}]' + else + IS_LABEL_SET_BY_PANDOC = true + end + elseif RAW_ATTRIBUTE == 'latex' then + LABEL_TEMPLATE = '\\label{{{label}}}' + end +end + +define_raw_attribute() +define_label_template() + +-- End of initialization + +-- Configuration + +local config = { + page_prefix = 'p. ', + pages_prefix = 'p. ', + note_prefix = 'n. ', + pagenote_order = 'pagefirst', + pagenote_separator = ', ', + pagenote_at_end = '', + references_range_separator = '>', + range_separator = '-', + only_explicit_labels = 'false', + default_info_type = 'page', + filelabel_ref_separator = '::' +} + +local function format_config_to_openxml() + to_format = { 'page_prefix', + 'pages_prefix', + 'note_prefix', + 'pagenote_separator', + 'pagenote_at_end', + 'range_separator' } + for i = 1, #to_format do + config[to_format[i]] = '' .. + config[to_format[i]] .. '' + end +end + +local function set_configuration_item_from_metadata(item, metamap) + metakey = 'tcrf-' .. string.gsub(item, '_', '-') + if metamap[metakey] then + -- The metadata values are Str in MetaInlines. + config[item] = metamap[metakey][1].c + end +end + +local function configure(metadata) + for item, _ in pairs(config) do + set_configuration_item_from_metadata(item, metadata) + end + if RAW_ATTRIBUTE == 'openxml' then + format_config_to_openxml() + end +end + +-- End of configuration + +-- Extensions for the output document's format + +local function define_tex_macros(document) + if RAW_ATTRIBUTE == 'context' then + local footnote_redefinition = '\\let\\oldfootnote\\footnote\n' .. + '\\define[2]\\footnote{\\oldfootnote[#2]{#1}%\n' .. + '\\expandafter\\edef\\csname #2pagenumber\\endcsname{\\userpage}}\n' + local predefined_strings = + '\\define\\tcrfpage{' .. config.page_prefix .. '}\n' .. + '\\define\\tcrfpages{' .. config.pages_prefix .. '}\n' .. + '\\define\\tcrfrangesep{' .. config.range_separator .. '}\n' + local range_ref = '\\ifdefined\\tcrfpagerangeref\\else\n' .. + '\\define[2]\\tcrfpagerangeref{' .. + '\\if' .. + '\\csname #1pagenumber\\endcsname' .. + '\\csname #2pagenumber\\endcsname\n' .. + '\\tcrfpage\\at[#1]\n' .. + '\\else\n' .. + '\\tcrfpages\\at[#1]\\tcrfrangesep\\at[#2]\\fi}\n' .. + '\\fi\n' + local macros_block = pandoc.RawBlock('context', + footnote_redefinition .. + predefined_strings .. + range_ref) + table.insert(document.blocks, 1, macros_block) + elseif RAW_ATTRIBUTE == 'latex' then + local predefined_strings = + '\\newcommand*{\\tcrfpage}{' .. config.page_prefix .. '}\n' .. + '\\newcommand*{\\tcrfpages}{' .. config.pages_prefix .. '}\n' .. + '\\newcommand*{\\tcrfrangesep}{' .. config.range_separator .. '}\n' + local label_redefinition = '\\let\\oldlabel\\label\n' .. + '\\renewcommand*{\\label}[1]{\\oldlabel{#1}%\n' .. + '\\expandafter\\xdef\\csname #1pagenumber\\endcsname{\\thepage}}\n' + local range_ref = '\\ifdefined\\tcrfpagerangeref\\else\n' .. + '\\newcommand*{\\tcrfpagerangeref}[2]{%\n' .. + '\\if' .. + '\\csname #1pagenumber\\endcsname' .. + '\\csname #2pagenumber\\endcsname\n' .. + '\\tcrfpage\\pageref{#1}\n' .. + '\\else\n' .. + '\\tcrfpages\\pageref{#1}\\tcrfrangesep\\pageref{#2}\\fi}\n' .. + '\\fi\n' + local macros_block = pandoc.RawBlock('latex', + predefined_strings .. + label_redefinition .. + range_ref) + table.insert(document.blocks, 1, macros_block) + end + return document +end + +-- End of the extensions for the output document's format + +-- Identifiers + +local spans_to_note_labels = {} +local current_odt_note_index = 0 +local is_first_span_in_note = true +local current_note_label + +local function map_span_to_label(span) + if RAW_ATTRIBUTE == 'opendocument' then + spans_to_note_labels[span.identifier] = 'ftn' .. current_odt_note_index + elseif RAW_ATTRIBUTE == 'openxml' or RAW_ATTRIBUTE == 'context' then + if is_first_span_in_note then + current_note_label = span.identifier + is_first_span_in_note = false + end + spans_to_note_labels[span.identifier] = current_note_label + end +end + +local function map_spans_to_labels(container) + for i = 1, #container.content do + -- The tests must be separate in order to support spans inside spans. + if container.content[i].t == 'Span' + and container.content[i].identifier ~= '' + then + map_span_to_label(container.content[i]) + end + if container.content[i].content then + map_spans_to_labels(container.content[i]) + end + end +end + +local function map_spans_to_notelabels(note) + if RAW_ATTRIBUTE == 'context' + or RAW_ATTRIBUTE == 'opendocument' + or RAW_ATTRIBUTE == 'openxml' then + is_first_span_in_note = true + map_spans_to_labels(note) + current_odt_note_index = current_odt_note_index + 1 + end +end + +local function make_label(label) + if IS_LABEL_SET_BY_PANDOC then + return pandoc.Str('') + else + label_rawcode = string.gsub(LABEL_TEMPLATE, '{{label}}', label) + return pandoc.RawInline(RAW_ATTRIBUTE, label_rawcode) + end +end + +local function labelize_span(span) + if span.identifier ~= '' then + local label = span.identifier + local label_begin = make_label(label, 'begin') + return { label_begin, span } + end +end + +local function has_class(elem, class) + if elem.classes then + for i = 1, #elem.classes do + if elem.classes[i] == class then + return true + end + end + return false + else + error('function has_class used on an element of type ' .. + elem.t .. ' that cannot have classes.') + end +end + +local current_note_labels = {} + +local collect_note_labels = { + Span = function(span) + if span.identifier ~= '' and + (config.only_explicit_labels == 'false' or has_class(span, 'label')) + then + table.insert(current_note_labels, span.identifier) + end + end +} + +local function make_notelabel(pos) + local raw_code = '' + if pos == 'begin' then + if RAW_ATTRIBUTE == 'openxml' then + raw_code = string.gsub( + '', + '{{label}}', current_note_labels[#current_note_labels]) + end + elseif pos == 'end' then + if RAW_ATTRIBUTE == 'context' then + local label = current_note_labels[1] .. '_note' + raw_code = '{' .. label .. '}' + elseif RAW_ATTRIBUTE == 'openxml' then + raw_code = string.gsub('', + '{{label}}', current_note_labels[1]) + end + end + return pandoc.RawInline(RAW_ATTRIBUTE, raw_code) +end + +local function labelize_note(note) + local label_begin = make_notelabel('begin') + local label_end = make_notelabel('end') + return { label_begin, note, label_end } +end + +function set_notelabels(note) + current_note_labels = {} + pandoc.walk_inline(note, collect_note_labels) + if #current_note_labels > 0 then + return labelize_note(note) + end +end + +-- End of identifiers-related code + +-- References + +local function is_reference_valid(ref) + if string.find(ref, '^[' .. IDENTIFIER_PATTERN .. ']') then + error('text-crossrefs.lua: Invalid character in reference: ' .. ref .. + '\nIdentifier and reference names can only contain' .. + ' alphanumerical characters, periods, underscores and hyphens.\n') + else + return true + end +end + +local function is_ref_external(rawref) + if string.find(rawref, config.filelabel_ref_separator, 1, true) then + return true + else + return false + end +end + +local function is_ref_range(rawref) + if string.find(rawref, config.references_range_separator, 1, true) then + return true + else + return false + end +end + +function get_first_reference_end_index(range_separator_index) + if range_separator_index then + return range_separator_index - 1 + end +end + +local function get_first_reference(rawref) + local _, file_ref_separator_index = + string.find(rawref, config.filelabel_ref_separator, 1, true) + local range_separator_index, _ = + string.find(rawref, config.references_range_separator, 1, true) + local ref = string.sub(rawref, + (file_ref_separator_index or 0) + 1, + get_first_reference_end_index(range_separator_index)) + if is_reference_valid(ref) then return ref end +end + +local function get_second_reference(rawref) + local second_ref_begin_index + local _, file_ref_separator_index = + string.find(rawref, config.filelabel_ref_separator, 1, true) + if file_ref_separator_index then + _, file_ref_separator_index = + string.find(rawref, + config.filelabel_ref_separator, + config.file_ref_separator_index + 1, + true) + second_ref_begin_index = file_ref_separator_index + 1 + else + local _, range_separator_index, _ = + string.find(rawref, config.references_range_separator, 1, true) + second_ref_begin_index = range_separator_index + 1 + end + local ref = string.sub(rawref, second_ref_begin_index) + if is_reference_valid(ref) then return ref end +end + +local function analyze_reference_span(reference_span) + if #reference_span.content == 1 and reference_span.content[1].t == 'Str' then + raw_reference = reference_span.content[1].c + analyzed_reference = {} + analyzed_reference.is_external = is_ref_external(raw_reference) + analyzed_reference.is_range = is_ref_range(raw_reference) + if analyzed_reference.is_external then + analyzed_reference.filelabel = get_extfilelabel(raw_reference) + end + analyzed_reference.first = get_first_reference(raw_reference) + if analyzed_reference.is_range then + analyzed_reference.second = get_second_reference(raw_reference) + end + return analyzed_reference + else + error('The content of a span with class ref must be a plain string.') + end +end + +local function insert_page_target_in_xml(target) + if RAW_ATTRIBUTE == 'opendocument' then + return '000' + elseif RAW_ATTRIBUTE == 'openxml' then + return '' .. + ' PAGEREF ' .. + target .. ' \\h ' .. + '' .. + '000' .. + '' + end +end + +local function format_page_reference(target) + if RAW_ATTRIBUTE == 'context' then + return config.page_prefix .. '\\at[' .. target .. ']' + elseif RAW_ATTRIBUTE == 'latex' then + return config.page_prefix .. '\\pageref{' .. target .. '}' + elseif RAW_ATTRIBUTE == 'opendocument' then + return config.page_prefix .. insert_page_target_in_xml(target) + elseif RAW_ATTRIBUTE == 'openxml' then + return config.page_prefix .. insert_page_target_in_xml(target) + end +end + +local function format_pagerange_reference(first, second) + if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then + return '\\tcrfpagerangeref{' .. first .. '}{' .. second .. '}' + elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then + return config.pages_prefix .. insert_page_target_in_xml(first) .. + config.range_separator .. insert_page_target_in_xml(second) + end +end + +local function format_note_reference(target) + if RAW_ATTRIBUTE == 'context' then + return config.note_prefix .. '\\in[' .. spans_to_note_labels[target] .. '_note' .. ']' + elseif RAW_ATTRIBUTE == 'latex' then + return config.note_prefix .. '\\ref{' .. target .. '}' + elseif RAW_ATTRIBUTE == 'opendocument' then + return config.note_prefix .. '000' + elseif RAW_ATTRIBUTE == 'openxml' then + return config.note_prefix .. + '' .. + ' NOTEREF ' .. + target .. '_Note' .. ' \\h ' .. + '' .. + '000' .. + '' + end +end + +local function format_pagenote_reference(target) + if config.pagenote_order == 'pagefirst' then + return format_page_reference(target) .. config.pagenote_separator .. + format_note_reference(target) .. config.pagenote_at_end + elseif config.pagenote_order == 'notefirst' then + return format_note_reference(target) .. config.pagenote_separator .. + format_page_reference(target) .. config.pagenote_at_end + else + error('tcrf-pagenote-order must be set either to pagefirst or notefirst.') + end +end + +local function format_reference(target, info_type) + if info_type == 'page' and target.is_range then + return format_pagerange_reference(target.first, target.second) + elseif info_type == 'page' then + return format_page_reference(target.first) + elseif info_type == 'note' then + return format_note_reference(target.first) + elseif info_type == 'pagenote' then + return format_pagenote_reference(target.first) + else + error('Invalid value for attribute type in span with class ref: ' .. + info_type) + end +end + +local function make_reference(span) + if has_class(span, 'ref') then + local target = analyze_reference_span(span) + if not target.is_external then + local info_type = span.attributes.type or config.default_info_type + local formatted_reference = format_reference(target, info_type) + span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, formatted_reference) + return span + end + end +end + +-- End of references-related code + +return { + { Meta = configure }, + { Pandoc = define_tex_macros }, + { Note = set_notelabels }, + { Note = map_spans_to_notelabels }, + { Span = labelize_span }, + { Span = make_reference } +} From 3e782fe4479d29b4a92f47541ea8e98e183e837e Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 13 Oct 2021 09:04:01 +0200 Subject: [PATCH 02/21] Retrait de documents de travail --- sampledocs/docx/[Content_Types].xml | 2 - sampledocs/docx/_rels/.rels | 2 - .../docx/customXml/_rels/item1.xml.rels | 2 - sampledocs/docx/customXml/item1.xml | 1 - sampledocs/docx/customXml/itemProps1.xml | 2 - sampledocs/docx/docProps/app.xml | 2 - sampledocs/docx/docProps/core.xml | 2 - sampledocs/docx/testref.docx | Bin 16063 -> 0 bytes sampledocs/docx/word/_rels/document.xml.rels | 2 - sampledocs/docx/word/document.xml | 2 - sampledocs/docx/word/endnotes.xml | 2 - sampledocs/docx/word/fontTable.xml | 2 - sampledocs/docx/word/footnotes.xml | 2 - sampledocs/docx/word/settings.xml | 2 - sampledocs/docx/word/styles.xml | 2 - sampledocs/docx/word/stylesWithEffects.xml | 2 - sampledocs/docx/word/theme/theme1.xml | 2 - sampledocs/docx/word/webSettings.xml | 2 - sampledocs/docx/~$estref.docx | Bin 162 -> 0 bytes sampledocs/filter-docx/[Content_Types].xml | 1 - sampledocs/filter-docx/_rels/.rels | 1 - sampledocs/filter-docx/docProps/app.xml | 18 - sampledocs/filter-docx/docProps/core.xml | 1 - sampledocs/filter-docx/docProps/custom.xml | 1 - sampledocs/filter-docx/test.docx | Bin 10472 -> 0 bytes .../filter-docx/word/_rels/document.xml.rels | 1 - .../filter-docx/word/_rels/footnotes.xml.rels | 1 - sampledocs/filter-docx/word/comments.xml | 1 - sampledocs/filter-docx/word/document.xml | 1 - sampledocs/filter-docx/word/fontTable.xml | 52 -- sampledocs/filter-docx/word/footnotes.xml | 6 - sampledocs/filter-docx/word/numbering.xml | 1 - sampledocs/filter-docx/word/settings.xml | 46 -- sampledocs/filter-docx/word/styles.xml | 467 ------------------ sampledocs/filter-docx/word/theme/theme1.xml | 2 - sampledocs/filter-docx/word/webSettings.xml | 5 - sampledocs/odt/META-INF/manifest.xml | 11 - sampledocs/odt/Thumbnails/thumbnail.png | Bin 570 -> 0 bytes sampledocs/odt/content.xml | 2 - sampledocs/odt/manifest.rdf | 18 - sampledocs/odt/meta.xml | 2 - sampledocs/odt/mimetype | 1 - sampledocs/odt/settings.xml | 2 - sampledocs/odt/styles.xml | 2 - sampledocs/odt/testref.odt | Bin 9757 -> 0 bytes sampledocs/pandoc-docx/[Content_Types].xml | 1 - sampledocs/pandoc-docx/_rels/.rels | 1 - sampledocs/pandoc-docx/docProps/app.xml | 18 - sampledocs/pandoc-docx/docProps/core.xml | 1 - sampledocs/pandoc-docx/docProps/custom.xml | 1 - sampledocs/pandoc-docx/test.docx | Bin 10296 -> 0 bytes .../pandoc-docx/word/_rels/document.xml.rels | 1 - .../pandoc-docx/word/_rels/footnotes.xml.rels | 1 - sampledocs/pandoc-docx/word/comments.xml | 1 - sampledocs/pandoc-docx/word/document.xml | 1 - sampledocs/pandoc-docx/word/fontTable.xml | 52 -- sampledocs/pandoc-docx/word/footnotes.xml | 101 ---- sampledocs/pandoc-docx/word/numbering.xml | 1 - sampledocs/pandoc-docx/word/settings.xml | 46 -- sampledocs/pandoc-docx/word/styles.xml | 467 ------------------ sampledocs/pandoc-docx/word/theme/theme1.xml | 2 - sampledocs/pandoc-docx/word/webSettings.xml | 5 - sampledocs/testref.odt | Bin 8830 -> 0 bytes 63 files changed, 1376 deletions(-) delete mode 100644 sampledocs/docx/[Content_Types].xml delete mode 100644 sampledocs/docx/_rels/.rels delete mode 100644 sampledocs/docx/customXml/_rels/item1.xml.rels delete mode 100644 sampledocs/docx/customXml/item1.xml delete mode 100644 sampledocs/docx/customXml/itemProps1.xml delete mode 100644 sampledocs/docx/docProps/app.xml delete mode 100644 sampledocs/docx/docProps/core.xml delete mode 100755 sampledocs/docx/testref.docx delete mode 100644 sampledocs/docx/word/_rels/document.xml.rels delete mode 100644 sampledocs/docx/word/document.xml delete mode 100644 sampledocs/docx/word/endnotes.xml delete mode 100644 sampledocs/docx/word/fontTable.xml delete mode 100644 sampledocs/docx/word/footnotes.xml delete mode 100644 sampledocs/docx/word/settings.xml delete mode 100644 sampledocs/docx/word/styles.xml delete mode 100644 sampledocs/docx/word/stylesWithEffects.xml delete mode 100644 sampledocs/docx/word/theme/theme1.xml delete mode 100644 sampledocs/docx/word/webSettings.xml delete mode 100644 sampledocs/docx/~$estref.docx delete mode 100644 sampledocs/filter-docx/[Content_Types].xml delete mode 100644 sampledocs/filter-docx/_rels/.rels delete mode 100644 sampledocs/filter-docx/docProps/app.xml delete mode 100644 sampledocs/filter-docx/docProps/core.xml delete mode 100644 sampledocs/filter-docx/docProps/custom.xml delete mode 100644 sampledocs/filter-docx/test.docx delete mode 100644 sampledocs/filter-docx/word/_rels/document.xml.rels delete mode 100644 sampledocs/filter-docx/word/_rels/footnotes.xml.rels delete mode 100644 sampledocs/filter-docx/word/comments.xml delete mode 100644 sampledocs/filter-docx/word/document.xml delete mode 100644 sampledocs/filter-docx/word/fontTable.xml delete mode 100644 sampledocs/filter-docx/word/footnotes.xml delete mode 100644 sampledocs/filter-docx/word/numbering.xml delete mode 100644 sampledocs/filter-docx/word/settings.xml delete mode 100644 sampledocs/filter-docx/word/styles.xml delete mode 100644 sampledocs/filter-docx/word/theme/theme1.xml delete mode 100644 sampledocs/filter-docx/word/webSettings.xml delete mode 100644 sampledocs/odt/META-INF/manifest.xml delete mode 100644 sampledocs/odt/Thumbnails/thumbnail.png delete mode 100644 sampledocs/odt/content.xml delete mode 100644 sampledocs/odt/manifest.rdf delete mode 100644 sampledocs/odt/meta.xml delete mode 100644 sampledocs/odt/mimetype delete mode 100644 sampledocs/odt/settings.xml delete mode 100644 sampledocs/odt/styles.xml delete mode 100644 sampledocs/odt/testref.odt delete mode 100644 sampledocs/pandoc-docx/[Content_Types].xml delete mode 100644 sampledocs/pandoc-docx/_rels/.rels delete mode 100644 sampledocs/pandoc-docx/docProps/app.xml delete mode 100644 sampledocs/pandoc-docx/docProps/core.xml delete mode 100644 sampledocs/pandoc-docx/docProps/custom.xml delete mode 100644 sampledocs/pandoc-docx/test.docx delete mode 100644 sampledocs/pandoc-docx/word/_rels/document.xml.rels delete mode 100644 sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels delete mode 100644 sampledocs/pandoc-docx/word/comments.xml delete mode 100644 sampledocs/pandoc-docx/word/document.xml delete mode 100644 sampledocs/pandoc-docx/word/fontTable.xml delete mode 100644 sampledocs/pandoc-docx/word/footnotes.xml delete mode 100644 sampledocs/pandoc-docx/word/numbering.xml delete mode 100644 sampledocs/pandoc-docx/word/settings.xml delete mode 100644 sampledocs/pandoc-docx/word/styles.xml delete mode 100644 sampledocs/pandoc-docx/word/theme/theme1.xml delete mode 100644 sampledocs/pandoc-docx/word/webSettings.xml delete mode 100644 sampledocs/testref.odt diff --git a/sampledocs/docx/[Content_Types].xml b/sampledocs/docx/[Content_Types].xml deleted file mode 100644 index 5f21f33..0000000 --- a/sampledocs/docx/[Content_Types].xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/_rels/.rels b/sampledocs/docx/_rels/.rels deleted file mode 100644 index fdd8c4f..0000000 --- a/sampledocs/docx/_rels/.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/customXml/_rels/item1.xml.rels b/sampledocs/docx/customXml/_rels/item1.xml.rels deleted file mode 100644 index a9c831d..0000000 --- a/sampledocs/docx/customXml/_rels/item1.xml.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/customXml/item1.xml b/sampledocs/docx/customXml/item1.xml deleted file mode 100644 index 766e845..0000000 --- a/sampledocs/docx/customXml/item1.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/sampledocs/docx/customXml/itemProps1.xml b/sampledocs/docx/customXml/itemProps1.xml deleted file mode 100644 index ebcaae9..0000000 --- a/sampledocs/docx/customXml/itemProps1.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/docProps/app.xml b/sampledocs/docx/docProps/app.xml deleted file mode 100644 index c0832c6..0000000 --- a/sampledocs/docx/docProps/app.xml +++ /dev/null @@ -1,2 +0,0 @@ - -31847Microsoft Office Word011falsefalse54falsefalse14.0000 \ No newline at end of file diff --git a/sampledocs/docx/docProps/core.xml b/sampledocs/docx/docProps/core.xml deleted file mode 100644 index 5cf7d66..0000000 --- a/sampledocs/docx/docProps/core.xml +++ /dev/null @@ -1,2 +0,0 @@ - -Bastien DUMONTBastien DUMONT22021-05-22T09:07:00Z2021-05-22T09:17:00Z \ No newline at end of file diff --git a/sampledocs/docx/testref.docx b/sampledocs/docx/testref.docx deleted file mode 100755 index 93e23f83f6b0e90314f8e92172a9e6bee00dca8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16063 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 Q4GKUHh!hohfBf}-04SzC)Bpeg diff --git a/sampledocs/docx/word/_rels/document.xml.rels b/sampledocs/docx/word/_rels/document.xml.rels deleted file mode 100644 index ebee045..0000000 --- a/sampledocs/docx/word/_rels/document.xml.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/document.xml b/sampledocs/docx/word/document.xml deleted file mode 100644 index 6b6295c..0000000 --- a/sampledocs/docx/word/document.xml +++ /dev/null @@ -1,2 +0,0 @@ - -Référence à la note : NOTEREF _Ref72574139 \h 1 \ No newline at end of file diff --git a/sampledocs/docx/word/endnotes.xml b/sampledocs/docx/word/endnotes.xml deleted file mode 100644 index f95e6f1..0000000 --- a/sampledocs/docx/word/endnotes.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/fontTable.xml b/sampledocs/docx/word/fontTable.xml deleted file mode 100644 index e187e55..0000000 --- a/sampledocs/docx/word/fontTable.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/footnotes.xml b/sampledocs/docx/word/footnotes.xml deleted file mode 100644 index dbe8778..0000000 --- a/sampledocs/docx/word/footnotes.xml +++ /dev/null @@ -1,2 +0,0 @@ - - La note ici \ No newline at end of file diff --git a/sampledocs/docx/word/settings.xml b/sampledocs/docx/word/settings.xml deleted file mode 100644 index 425f092..0000000 --- a/sampledocs/docx/word/settings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/styles.xml b/sampledocs/docx/word/styles.xml deleted file mode 100644 index 4c27df6..0000000 --- a/sampledocs/docx/word/styles.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/stylesWithEffects.xml b/sampledocs/docx/word/stylesWithEffects.xml deleted file mode 100644 index 25cd1cb..0000000 --- a/sampledocs/docx/word/stylesWithEffects.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/theme/theme1.xml b/sampledocs/docx/word/theme/theme1.xml deleted file mode 100644 index f292589..0000000 --- a/sampledocs/docx/word/theme/theme1.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/word/webSettings.xml b/sampledocs/docx/word/webSettings.xml deleted file mode 100644 index 88ba7f2..0000000 --- a/sampledocs/docx/word/webSettings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/docx/~$estref.docx b/sampledocs/docx/~$estref.docx deleted file mode 100644 index 3d71b4059cf8e320db8f88d5da6512f19d4eebcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmd;cN-QqPOwChp3H9~&3t=D*@G&?sBr+5;lrUs6q%!0&C@{D%gfjRt_%rx15Nigy UO^iSR7-leA%)np)#8!(L0J)D0D*ylh diff --git a/sampledocs/filter-docx/[Content_Types].xml b/sampledocs/filter-docx/[Content_Types].xml deleted file mode 100644 index f8e3f00..0000000 --- a/sampledocs/filter-docx/[Content_Types].xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/_rels/.rels b/sampledocs/filter-docx/_rels/.rels deleted file mode 100644 index ae7b3ed..0000000 --- a/sampledocs/filter-docx/_rels/.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/app.xml b/sampledocs/filter-docx/docProps/app.xml deleted file mode 100644 index 1764f14..0000000 --- a/sampledocs/filter-docx/docProps/app.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 83 - false - false - 12 - 12.0000 - false - Microsoft Word 12.0.0 - 583 - - 0 - 6 - false - 475 - 8 - 1 - \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/core.xml b/sampledocs/filter-docx/docProps/core.xml deleted file mode 100644 index 6336e34..0000000 --- a/sampledocs/filter-docx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2021-05-23T17:28:34Z2021-05-23T17:28:34Z \ No newline at end of file diff --git a/sampledocs/filter-docx/docProps/custom.xml b/sampledocs/filter-docx/docProps/custom.xml deleted file mode 100644 index bd63c79..0000000 --- a/sampledocs/filter-docx/docProps/custom.xml +++ /dev/null @@ -1 +0,0 @@ -) ( \ No newline at end of file diff --git a/sampledocs/filter-docx/test.docx b/sampledocs/filter-docx/test.docx deleted file mode 100644 index 93b7cc53dac1da3b48a89ceeb1ba459ef805b4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10472 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 diff --git a/sampledocs/filter-docx/word/_rels/document.xml.rels b/sampledocs/filter-docx/word/_rels/document.xml.rels deleted file mode 100644 index b5a18af..0000000 --- a/sampledocs/filter-docx/word/_rels/document.xml.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/_rels/footnotes.xml.rels b/sampledocs/filter-docx/word/_rels/footnotes.xml.rels deleted file mode 100644 index bee2b8c..0000000 --- a/sampledocs/filter-docx/word/_rels/footnotes.xml.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/comments.xml b/sampledocs/filter-docx/word/comments.xml deleted file mode 100644 index 229ad01..0000000 --- a/sampledocs/filter-docx/word/comments.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/document.xml b/sampledocs/filter-docx/word/document.xml deleted file mode 100644 index 24a8f34..0000000 --- a/sampledocs/filter-docx/word/document.xml +++ /dev/null @@ -1 +0,0 @@ -Émile Gaboriau published L’Affaire Lerouge in 1866.It was very popular.See p.  PAGEREF publication_pageNb \h 000 for the publication date. I expressed my thoughts about it p.  PAGEREF my-evaluation_pageNb \h 000 (n.  NOTEREF my-evaluation_noteNb \h 000). \ No newline at end of file diff --git a/sampledocs/filter-docx/word/fontTable.xml b/sampledocs/filter-docx/word/fontTable.xml deleted file mode 100644 index fce61de..0000000 --- a/sampledocs/filter-docx/word/fontTable.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/footnotes.xml b/sampledocs/filter-docx/word/footnotes.xml deleted file mode 100644 index b692070..0000000 --- a/sampledocs/filter-docx/word/footnotes.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - It is a very fine piece of literature. \ No newline at end of file diff --git a/sampledocs/filter-docx/word/numbering.xml b/sampledocs/filter-docx/word/numbering.xml deleted file mode 100644 index 06fb610..0000000 --- a/sampledocs/filter-docx/word/numbering.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/settings.xml b/sampledocs/filter-docx/word/settings.xml deleted file mode 100644 index 2428379..0000000 --- a/sampledocs/filter-docx/word/settings.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/styles.xml b/sampledocs/filter-docx/word/styles.xml deleted file mode 100644 index 723bc8d..0000000 --- a/sampledocs/filter-docx/word/styles.xml +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/theme/theme1.xml b/sampledocs/filter-docx/word/theme/theme1.xml deleted file mode 100644 index a6f7240..0000000 --- a/sampledocs/filter-docx/word/theme/theme1.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/filter-docx/word/webSettings.xml b/sampledocs/filter-docx/word/webSettings.xml deleted file mode 100644 index 570ca8e..0000000 --- a/sampledocs/filter-docx/word/webSettings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/sampledocs/odt/META-INF/manifest.xml b/sampledocs/odt/META-INF/manifest.xml deleted file mode 100644 index 6d7e2e5..0000000 --- a/sampledocs/odt/META-INF/manifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/odt/Thumbnails/thumbnail.png b/sampledocs/odt/Thumbnails/thumbnail.png deleted file mode 100644 index 7754e740cabf24daa46933b18a44f402c9f1ace4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^TNxM_8911MtV4f~zXVdo0X`wFJv}`WCQO(;d-meR zi&w8+y=BXmUAuN2K79DhnKPF!U%qqa&f~|AU%!6+<;$0U|Na3r{r~@e^7QMXK(h{c zx;TbZ+#O$7-nH!7r>oCq{k|6-y|;$vRkrQholEY%Uz+F6+b<)p*=F3j^qk?|C-GD|%y}g!`$b&uos(scgMgUcdSBkF$^bi~jPw ztGRkUqn^jSeB1Ti_X75wPl|ci^HSrbptFYIGvg;0f~+1H>)fC7(*KI()~RL74o^Kl z=akpdB>|V$=w6+7YHQK_?ZN-!*0W6CnD%miTHZ(1@8{hSt{()fzoxG$Z2m=k?5no@ z|8VEbs+iqZ4a4LY_uY(td|N%`+TBwY?tF$v=}B>?mb^F`R@)eUKu=H{an^LB{Ts5Z -1La note iciRéférence à la note : 300p. 300Le marque-page est p. 300. diff --git a/sampledocs/odt/manifest.rdf b/sampledocs/odt/manifest.rdf deleted file mode 100644 index 927e206..0000000 --- a/sampledocs/odt/manifest.rdf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/sampledocs/odt/meta.xml b/sampledocs/odt/meta.xml deleted file mode 100644 index 38ec226..0000000 --- a/sampledocs/odt/meta.xml +++ /dev/null @@ -1,2 +0,0 @@ - -Bastien Dumont2021-05-22T11:38:49.9363886482021-05-22T23:19:47.946633474Bastien DumontPT3M32S2LibreOffice/7.1.3.2$Linux_X86_64 LibreOffice_project/10$Build-2 \ No newline at end of file diff --git a/sampledocs/odt/mimetype b/sampledocs/odt/mimetype deleted file mode 100644 index 2e95b81..0000000 --- a/sampledocs/odt/mimetype +++ /dev/null @@ -1 +0,0 @@ -application/vnd.oasis.opendocument.text \ No newline at end of file diff --git a/sampledocs/odt/settings.xml b/sampledocs/odt/settings.xml deleted file mode 100644 index 7e29687..0000000 --- a/sampledocs/odt/settings.xml +++ /dev/null @@ -1,2 +0,0 @@ - -00764511996truefalseview2701129850076431199401false180falsefalsefalsefalsefalsetruetruetruetruetruefalse0falsefalsefalsetruefalsefalsetruefalsefalsefalsetruetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruefalsefalsefalsetrue01truefalsehigh-resolutiontruefalsefalsetruefalsetruetruefalsetruetrue455576truefalsetrue0falsefalsefalsetruefalsetruefalsefalsefalsefalsetruefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalse390281falsefalsefalsefalsefalsetruefalsetruetrue \ No newline at end of file diff --git a/sampledocs/odt/styles.xml b/sampledocs/odt/styles.xml deleted file mode 100644 index 88f85a9..0000000 --- a/sampledocs/odt/styles.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/odt/testref.odt b/sampledocs/odt/testref.odt deleted file mode 100644 index b10362ba7f684755da00ce77727a83f9e9254026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9757 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 diff --git a/sampledocs/pandoc-docx/[Content_Types].xml b/sampledocs/pandoc-docx/[Content_Types].xml deleted file mode 100644 index f8e3f00..0000000 --- a/sampledocs/pandoc-docx/[Content_Types].xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/_rels/.rels b/sampledocs/pandoc-docx/_rels/.rels deleted file mode 100644 index ae7b3ed..0000000 --- a/sampledocs/pandoc-docx/_rels/.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/app.xml b/sampledocs/pandoc-docx/docProps/app.xml deleted file mode 100644 index 1764f14..0000000 --- a/sampledocs/pandoc-docx/docProps/app.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 83 - false - false - 12 - 12.0000 - false - Microsoft Word 12.0.0 - 583 - - 0 - 6 - false - 475 - 8 - 1 - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/core.xml b/sampledocs/pandoc-docx/docProps/core.xml deleted file mode 100644 index 1c8cf8d..0000000 --- a/sampledocs/pandoc-docx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2021-05-22T21:17:30Z2021-05-22T21:17:30Z \ No newline at end of file diff --git a/sampledocs/pandoc-docx/docProps/custom.xml b/sampledocs/pandoc-docx/docProps/custom.xml deleted file mode 100644 index 3d9de2d..0000000 --- a/sampledocs/pandoc-docx/docProps/custom.xml +++ /dev/null @@ -1 +0,0 @@ -/home/bdumont/Documents/Doctorat/Redaction/Metadonnees/FEUILLE-STYLE_These.csl \ No newline at end of file diff --git a/sampledocs/pandoc-docx/test.docx b/sampledocs/pandoc-docx/test.docx deleted file mode 100644 index 4677c91315e21cdacc7c9f92ad896bfce3b79900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10296 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 diff --git a/sampledocs/pandoc-docx/word/_rels/document.xml.rels b/sampledocs/pandoc-docx/word/_rels/document.xml.rels deleted file mode 100644 index b5a18af..0000000 --- a/sampledocs/pandoc-docx/word/_rels/document.xml.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels b/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels deleted file mode 100644 index bee2b8c..0000000 --- a/sampledocs/pandoc-docx/word/_rels/footnotes.xml.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/comments.xml b/sampledocs/pandoc-docx/word/comments.xml deleted file mode 100644 index 229ad01..0000000 --- a/sampledocs/pandoc-docx/word/comments.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/document.xml b/sampledocs/pandoc-docx/word/document.xml deleted file mode 100644 index 0e2b5f8..0000000 --- a/sampledocs/pandoc-docx/word/document.xml +++ /dev/null @@ -1 +0,0 @@ -Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte.Du texte. \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/fontTable.xml b/sampledocs/pandoc-docx/word/fontTable.xml deleted file mode 100644 index fce61de..0000000 --- a/sampledocs/pandoc-docx/word/fontTable.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/footnotes.xml b/sampledocs/pandoc-docx/word/footnotes.xml deleted file mode 100644 index ba1176a..0000000 --- a/sampledocs/pandoc-docx/word/footnotes.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - La note 1. - - - - - La note 2. - - - - - citation? - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. - - - - - La note 4. \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/numbering.xml b/sampledocs/pandoc-docx/word/numbering.xml deleted file mode 100644 index 06fb610..0000000 --- a/sampledocs/pandoc-docx/word/numbering.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/settings.xml b/sampledocs/pandoc-docx/word/settings.xml deleted file mode 100644 index 2428379..0000000 --- a/sampledocs/pandoc-docx/word/settings.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/styles.xml b/sampledocs/pandoc-docx/word/styles.xml deleted file mode 100644 index 723bc8d..0000000 --- a/sampledocs/pandoc-docx/word/styles.xml +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/theme/theme1.xml b/sampledocs/pandoc-docx/word/theme/theme1.xml deleted file mode 100644 index a6f7240..0000000 --- a/sampledocs/pandoc-docx/word/theme/theme1.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/sampledocs/pandoc-docx/word/webSettings.xml b/sampledocs/pandoc-docx/word/webSettings.xml deleted file mode 100644 index 570ca8e..0000000 --- a/sampledocs/pandoc-docx/word/webSettings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/sampledocs/testref.odt b/sampledocs/testref.odt deleted file mode 100644 index 3cc51b6fdc34e2877c796e52df4fd3564d34a956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8830 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

e)x9h9A zp*hVJR&y6`ZN5F-N@$||`is0)7KRCX^L;Ic@OBpZTw!D+6vc~P82J3Te!mYUN06%( z;I9I0=hf@?Gu${{%}R#3>y5*a+uydQ`?GnEv1Vbram^jxGMfiiO(~~~s9N%;G(o&@ zXymHOP>P&+&Aee&uX#C02GGr<8*dM^N~SolBM%Rs%C5<9J^^$%zS>Pr_ww=xCCeb6 zyI$d%vjIwu^9^qLM5D?$8Ho=VI6R$*?c(zaIhEDe;$6jky0e}Xs@EVLsbS?MWur*D zqRMp+Szr@p!Z=-GEzPEsh+sH1SII+b*fSPoV2PGm(|%B7(TdJAXw()ouGg_4V9jgh z&h*ZixreJWvd1YHjcS5H$CA&paSNt_Te9rIp(~FQi-<}`C@N!}A+<>)nn!$(gt4Jz z+s3rAT8^a^Fa9Z0y}@KXFNDbwFaONr(1ELlZqrWXtEjSsUm(8tLS7js_hToMifhhg zoehi15R5UgYLCz03={KSsjB_5y}1*Qx!VMWNq_xL!`KT@p!O=MZENC2qIt{0b{Pw| zxO{9luF#q9&apqFLE=&Fd~jh-s9scPRRfDC&N6FfI0++FF0G+yb|F8>K!H88J)tr| z0X|)(OaVJt^CQ=R01s>}R^u)?gD1!G-3$D}z6bbBqkJ+gX-jMk1S*u_u-;we1EC7? z%54o^T=~S0d-xcr(`mji7mv4YE4z4)c~TRQFP({S-Zgqn1Z2`@*9CRFIkcxW=i(!N z1)_7@)?lyE;dV5);B-VpdDss)?nnXaJj_|bGlO5DHa_gPB!=nV@4Fqh5R}+6*CsdH zqyG|}PV@1Gq<=nsf8M8TRPFesuKfjsaO9!X0RYyEu6gP8))bO%kIFb~2m2={EeodU z4>+f!1E{W%A&*I=B{UHEufq_yKEOS1Hy*cJs`A*cTQdo@Tn#}ToZ6^)R5Lxwbf|Sk ztTAstji>Cl?j%EVP6s#j(Oz0AY#Lc1q+#eC-pD`BO&u;(qp8~qBbC9ofES`& z*{T0d#rO$wz!E`Kkm=_ozKXu!hjMx<0YvT!4OC$7Rz4S+O3U!A@s>&lGlq%CmRE9( zPLef8$TSwxyW9W=X8jG)o2HC4^9mn)!grY|uwWJjKnDSfGuQXlAEqpxX=VWj5W@rJ8p0TCynGqpQ!Q#V=dcg!cs7Hx^NZZ?<$lvp5j& z>3^6>-L7+YAZEaO+l{dSnM;2o#jkB3YhkWSQMX=V;K|ZLCwK9f*=k5G%wnI^<^^CgT4-OtN8MYe&jAz5GE;vPp3SoE z+GNn~1hqP*E0mxuo~)kT@q3cHksVwV?M3)Jj*peD{`8%0@NL!Sl_t#68KU%-I1b%z ziq2-vZ7V*KOjF4hIpuHB}{Jj+9Jn$la`e~ic zFr~YK9sN+<4H9w-NvHsk0>7s_VXT1`>04{2;Jf#1 z`!iG*){vu7@T&M+4v5z9R3O2QX&oAk&kNNF;_nLq?g`Hy#(RNmO8K zmjH&K^*ubNE(YWSUCmzE&nl@o$6PMTFKxaKygUq<8YIb26l}~(mKvQ+J$=a$JDT0v zXn@c^JIuuybf8foqgI@O(ZMLnyF6*ft%;rjH<9AMT#QnH-`Qv0Fe@k@j<1Hhjq+`W zQfuV+_G&}Z4QZ@RF4l|Enyvp(nBcRqe)Bnw?FCAr%`UMU9Fy)mt9%NJl&8Wa=UK&R zSwE*_nH+o3;@)DUFh|y9&tL@5UKvkJ36=D!op}eVpPP4ca=A5~G5-4ysc*N?k&?Oa z`?(?G+y&=h<6C#7!y@Q1>Y);G;=+Z|~owPSRa#!418SB)~ zIDOGQ_2TcLsXTKjLpLn#$-p1X+DK-1OUPi#dD>m{DBfa* zw@MM|og8drpFR+#=Bvc!ZRC3pw6#U}9flBRs_5(4n3$D2R_6@5P1?6bq{xi^ZnEVe zI)qh%uNb+;y~*a__I?UIUnX0`4Wi{;Q*e>!?qBNI{aJxo^bxMErF*r&25|$|wEOOZ zL|x{PeBI~RA)08Nx_p0E_;@b(<;&03qn`;?5&O%vohBnOoY3_unuLfxjWBORm}N-G zuTXEpv-1%ufAT7~B{ltbb1L;2V zIP+#wHs_sujTz8G?M`-JVd{*IR0e>yk0-n?8d<2GZFaht8N`Yv01OalJsak?qw|0} z+W@`T%clxQ6luI2Q+~)fk#fc~;u@J*RLTwS6;-R%PcHd#UHly^?xN4;V92bdBP^+~ zhRU6r^|D1Fk5w@Yp6||`(KdSwN+$P?d$RU{;!wlI8)~`ZIjlD810!%vYZ;f+GcRfV zN+LgA6ctnR9IY|>W!AiKjvD8=}Rbs8alyC?S7^soqfDVnFb zVe3ulJ{w6gWcCkHDV55>qL)4|hlfQ>EGEul3+TpCZVyX5Ft+YBA z1dGSGDpoOSbJ7f5Ho3Ur2)7rT3Fu;DT;mf6`n33{?!J#A=~%R#x;ExPT<2fLcGL4e z8Hgm|=_^YFT#igW>~zo+Iy=&ldw)%~X~KHMwj}t{rMB5t@p8r!!)f+dH;}Cy#A|2@ z3}iOpy2innoM729l4v)WV{;vF1!E|Y9A_7)cn3>mhgK5T5Ejer!;4)O)@F{SNBEap zH1H&0blHxFqDHZg$K$0Okt5gDIt;#8yL27qe{q79ts}TX0wL@lHGGs5=r2Gz_o|-1 zdGu_p+R`YUTkx$*D7lEarvTH`93mM?L^P-1H(MS{%T8HNLpUW>Ix{;0EMLLd&aZ%x^2~?5)#YjIHgu@s zH;98!&NMRk=qeXQaAW;CA{e7Crn=_`gOA3<^{_?9ebf^*VUXO=ILOn+>eh5)bca*9 z3Q}52;9|EfRf1On9n~TB3NR7EmPV*4y1F&o|z~-yw%8%ZgtLBi(^C zT}eB=P&TWrxSIu?gWP3?kTnGaYcO}{nm8=OGVjJq-t#~EL{8-x{Y-mh8SC&>Yp)W7 zWc7(v^U%4Z)##PrpkUUz!I(iuNicg{IyfSn!`&>7mW^-Lw}MNMgDd za+!;TjudpM^8vrTqmXx?GK4ql^gJ<<|2Pv&r-1xT4HJkmijN%zc98+c6!Utq1i2s% zw3_bGp?fi6!SZRE6poGuD5=jY)TX}EYD*BwpL{HlWgwAdH-Rh&Vc&8kemw4wpi9p6Zj6fYOWGx!5UEmQTzBSn2j!r7xQR z2nIVuzSiwc?_aMV@o)3gE2a%&$tVU=HA7s`7-QjNbJBxxG>}wOnLi;}>3(`H66v+I zk_!sOL;OC4YfY+4Yh%6wKf+>|LI3i#|NJ6lJY`k^=v5-ovJV@>4o~~64>w+qF4^VO zJH_!>{oy>L#iC+YTq?2$Tu$5GXK|Ahp4$4(XYzqpvT@>Ak z2d|C0K5Nj&84p%+7T~;uUC=#=lz3?Ylh?XQddtRMN<`#Mzh~|7{M<$M8zzHsM(ReF zV3o7De9kK@G0#tLH<<et5O-^a^D_&Y!M!}3p!$)Dp*K!N_$ru>2O!|Pw` zxBGU}Pm#j>wfXcsMrbRLl1AN?=b<<_qN From d8340c7ed36c821c294a35ecc95222c2a0e0df40 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Tue, 19 Oct 2021 09:18:19 +0200 Subject: [PATCH 03/21] =?UTF-8?q?Mise=20en=20place=20de=20l'architecture?= =?UTF-8?q?=20g=C3=A9n=C3=A9rale=20sans=20code=20sp=C3=A9cifique=20aux=20f?= =?UTF-8?q?ormats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++- sample.md | 2 ++ text-crossrefs.lua | 81 ++++++++++++++++++++++++++++++++++------------ 3 files changed, 68 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b4c2037..8ad860b 100644 --- a/README.md +++ b/README.md @@ -67,12 +67,14 @@ If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{ The separator (here `>`) can be set to any string composed of characters other than alphanumeric, period, colon, underscore, hyphen and space. -In LaTeX and ConTeXt output, the page range will be printed as a simple page reference if the page numbers are identical. You can provide your own definition of the macro `\tcrfpagerangeref{}{}` in the preamble. In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by the means of automatic search and replace with regular expressions. +In LaTeX and ConTeXt output, the page range will be printed as a simple page reference if the page numbers are identical. You can provide your own definition of the macro `\tcrfpagerangeref[]{}{}` in the preamble. In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by the means of automatic search and replace with regular expressions. ## Enumerations Rather +Enumerations are only supported for references to page and note numbers. + ## Customization The following metadata fields can be set as strings: @@ -86,6 +88,9 @@ The following metadata fields can be set as strings: * `tcrf-note-prefix`: * “note” prefix; * defaults to `n. `. + * `tcrf-notes-prefix`: + * “notes” prefix; + * defaults to `n. `. * `tcrf-pagenote-separator`: * the separator between the references when `type` is set to `pagenote`; * defaults to `, `. diff --git a/sample.md b/sample.md index 13c7f35..e78a2cf 100644 --- a/sample.md +++ b/sample.md @@ -25,3 +25,5 @@ I want to refer to a note: * What formats are supported? → See [format]{.ref}. * What if the note contains multiple spans with identifiers? → See [which-identifier]{.ref}. * What happens if a span in contained in a span? → See [nested-spans]{.ref}. + * What are the notes? → [my-evaluation;format;refer-to-note]{.ref type=note} + * Where are the notes? → [my-evaluation;format]{.ref} diff --git a/text-crossrefs.lua b/text-crossrefs.lua index f4a62f3..ad959b7 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -1,6 +1,8 @@ -- TODO : permettre la citation de références multiples avec un seul préfixe -- [ref-one, ref-two>ref-four, ref-three]{.ref} → pp. 1, 3-6 et 12 -- Compléter README et test une fois que ce sera fait. +-- TODO : créer des commandes latex et context pour les énumérations +-- de notes et de pages sur le modèle de \tcrfpagerangeref -- Begin of initialization @@ -50,6 +52,7 @@ local config = { page_prefix = 'p. ', pages_prefix = 'p. ', note_prefix = 'n. ', + notes_prefix = 'n. ', pagenote_order = 'pagefirst', pagenote_separator = ', ', pagenote_at_end = '', @@ -366,38 +369,53 @@ local function insert_page_target_in_xml(target) end end -local function format_page_reference(target) - if RAW_ATTRIBUTE == 'context' then - return config.page_prefix .. '\\at[' .. target .. ']' - elseif RAW_ATTRIBUTE == 'latex' then - return config.page_prefix .. '\\pageref{' .. target .. '}' - elseif RAW_ATTRIBUTE == 'opendocument' then - return config.page_prefix .. insert_page_target_in_xml(target) - elseif RAW_ATTRIBUTE == 'openxml' then - return config.page_prefix .. insert_page_target_in_xml(target) +local function format_prefix(info_type, is_enumeration) + if not is_enumeration then + return config[info_type .. '_prefix'] + elseif RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then + return '' + elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then + return config[info_type .. 's_prefix'] end end -local function format_pagerange_reference(first, second) +local function format_page_reference(target) + if RAW_ATTRIBUTE == 'context' then + return '\\at[' .. target .. ']' + elseif RAW_ATTRIBUTE == 'latex' then + return '\\pageref{' .. target .. '}' + elseif RAW_ATTRIBUTE == 'opendocument' then + return insert_page_target_in_xml(target) + elseif RAW_ATTRIBUTE == 'openxml' then + return insert_page_target_in_xml(target) + end +end + +local function format_pagerange_reference(first, second, is_prefixed) if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then - return '\\tcrfpagerangeref{' .. first .. '}{' .. second .. '}' + local bracketed_arg = '' + if is_prefixed then bracketed_arg = 'prefixed' end + -- TODO : implémenter l'argument entre crochets + return '\\tcrfpagerangeref[' .. bracketed_arg .. ']{' .. first .. '}{' .. second .. '}' elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then - return config.pages_prefix .. insert_page_target_in_xml(first) .. + local to_return = '' + if is_prefixed then to_return = config.pages_prefix end + return to_return .. insert_page_target_in_xml(first) .. config.range_separator .. insert_page_target_in_xml(second) end end local function format_note_reference(target) if RAW_ATTRIBUTE == 'context' then - return config.note_prefix .. '\\in[' .. spans_to_note_labels[target] .. '_note' .. ']' + return '\\in[' .. spans_to_note_labels[target] .. '_note' .. ']' elseif RAW_ATTRIBUTE == 'latex' then - return config.note_prefix .. '\\ref{' .. target .. '}' + return '\\ref{' .. target .. '}' elseif RAW_ATTRIBUTE == 'opendocument' then - return config.note_prefix .. '000' elseif RAW_ATTRIBUTE == 'openxml' then - return config.note_prefix .. + return '' .. ' NOTEREF ' .. target .. '_Note' .. ' \\h ' .. @@ -409,10 +427,12 @@ end local function format_pagenote_reference(target) if config.pagenote_order == 'pagefirst' then - return format_page_reference(target) .. config.pagenote_separator .. + return format_prefix('page', false) .. format_page_reference(target) .. + config.pagenote_separator .. format_prefix('note', false) .. format_note_reference(target) .. config.pagenote_at_end elseif config.pagenote_order == 'notefirst' then - return format_note_reference(target) .. config.pagenote_separator .. + return format_prefix('note', false) .. format_note_reference(target) .. + config.pagenote_separator .. format_prefix('page', false) .. format_page_reference(target) .. config.pagenote_at_end else error('tcrf-pagenote-order must be set either to pagefirst or notefirst.') @@ -421,7 +441,8 @@ end local function format_reference(target, info_type) if info_type == 'page' and target.is_range then - return format_pagerange_reference(target.first, target.second) + return format_pagerange_reference(target.first, target.second, + not target.is_enumeration) elseif info_type == 'page' then return format_page_reference(target.first) elseif info_type == 'note' then @@ -434,13 +455,31 @@ local function format_reference(target, info_type) end end +local function make_reference_head(info_type, is_enumeration) + if info_type == 'page' or info_type == 'note' then + return format_prefix(info_type, is_enumeration) + else + return '' + end +end + +local function make_reference_body(target, info_type) + +end + +local function make_reference_tail(info_type) + +end + local function make_reference(span) if has_class(span, 'ref') then local target = analyze_reference_span(span) if not target.is_external then local info_type = span.attributes.type or config.default_info_type - local formatted_reference = format_reference(target, info_type) - span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, formatted_reference) + local head = make_reference_head(info_type, target.is_enumeration) + local body = make_reference_body(target, info_type) + local tail = make_reference_tail(info_type) + span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, head .. body .. tail) return span end end From de094f0f49ebb39df4818a933a979b42136ae493 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sun, 24 Oct 2021 11:37:17 +0200 Subject: [PATCH 04/21] =?UTF-8?q?Remplacer=20has=5Fclass=20par=20m=C3=A9th?= =?UTF-8?q?ode=20Pandoc.List:includes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- text-crossrefs.lua | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index f4a62f3..21b4030 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -205,26 +205,12 @@ local function labelize_span(span) end end -local function has_class(elem, class) - if elem.classes then - for i = 1, #elem.classes do - if elem.classes[i] == class then - return true - end - end - return false - else - error('function has_class used on an element of type ' .. - elem.t .. ' that cannot have classes.') - end -end - local current_note_labels = {} local collect_note_labels = { Span = function(span) if span.identifier ~= '' and - (config.only_explicit_labels == 'false' or has_class(span, 'label')) + (config.only_explicit_labels == 'false' or span.classes:includes('label')) then table.insert(current_note_labels, span.identifier) end @@ -435,7 +421,7 @@ local function format_reference(target, info_type) end local function make_reference(span) - if has_class(span, 'ref') then + if span.classes:includes('ref') then local target = analyze_reference_span(span) if not target.is_external then local info_type = span.attributes.type or config.default_info_type From 1c06aceca3bbe91b9c420e1822076f4908d46852 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sun, 24 Oct 2021 11:47:24 +0200 Subject: [PATCH 05/21] =?UTF-8?q?Cr=C3=A9ation=20des=20options=20de=20conf?= =?UTF-8?q?iguration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- text-crossrefs.lua | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8ad860b..4ac69b6 100644 --- a/README.md +++ b/README.md @@ -109,10 +109,10 @@ The following metadata fields can be set as strings: * `tcrf-references-enum-separator`: * the string used to separate the elements of an enumeration in a reference span; can be composed of any character not authorized in an identifier other than space or tab; * defaults to `;`. - * `tcrf-enum-separator`: + * `tcrf-multiple-delimiter`: * the string inserted between two elements (but the two last ones) in an enumeration; * defaults to a comma followed by a space. - * `tcrf-before-last-in-enum`: + * `tcrf-multiple-before-last`: * the string inserted between the two last elements in an enumeration; * defaults to `and` surrounded with spaces. * `tcrf-only-explicit-labels`: diff --git a/text-crossrefs.lua b/text-crossrefs.lua index ad959b7..cb708ca 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -56,6 +56,8 @@ local config = { pagenote_order = 'pagefirst', pagenote_separator = ', ', pagenote_at_end = '', + multiple_delimiter = ', ', + multiple_before_last = ' and ', references_range_separator = '>', range_separator = '-', only_explicit_labels = 'false', From 0bb74650d259304f9fc1179530bc41dd85d8090b Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sun, 24 Oct 2021 18:45:37 +0200 Subject: [PATCH 06/21] =?UTF-8?q?Enum=C3=A9ration=20fonctionnelle=20pour?= =?UTF-8?q?=20opendocument=20et=20openxml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- text-crossrefs.lua | 60 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4ac69b6..c06f5ea 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ The following metadata fields can be set as strings: * the string inserted between to page numbers in a range; * defaults to `-`. * `tcrf-references-enum-separator`: - * the string used to separate the elements of an enumeration in a reference span; can be composed of any character not authorized in an identifier other than space or tab; + * the character used to separate the elements of an enumeration in a reference span; can be any character not authorized in an identifier other than space or tab; * defaults to `;`. * `tcrf-multiple-delimiter`: * the string inserted between two elements (but the two last ones) in an enumeration; diff --git a/text-crossrefs.lua b/text-crossrefs.lua index cb708ca..167cdfd 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -60,6 +60,7 @@ local config = { multiple_before_last = ' and ', references_range_separator = '>', range_separator = '-', + references_enum_separator = ';', only_explicit_labels = 'false', default_info_type = 'page', filelabel_ref_separator = '::' @@ -337,12 +338,21 @@ local function get_second_reference(rawref) if is_reference_valid(ref) then return ref end end +local function is_ref_enumeration(raw_reference) + if string.match(raw_reference, '%' .. config.references_enum_separator) then + return true + else + return false + end +end + local function analyze_reference_span(reference_span) if #reference_span.content == 1 and reference_span.content[1].t == 'Str' then raw_reference = reference_span.content[1].c analyzed_reference = {} analyzed_reference.is_external = is_ref_external(raw_reference) analyzed_reference.is_range = is_ref_range(raw_reference) + analyzed_reference.is_enumeration = is_ref_enumeration(raw_reference) if analyzed_reference.is_external then analyzed_reference.filelabel = get_extfilelabel(raw_reference) end @@ -442,7 +452,7 @@ local function format_pagenote_reference(target) end local function format_reference(target, info_type) - if info_type == 'page' and target.is_range then + if info_type == 'page' and target.is_range then return format_pagerange_reference(target.first, target.second, not target.is_enumeration) elseif info_type == 'page' then @@ -457,20 +467,53 @@ local function format_reference(target, info_type) end end -local function make_reference_head(info_type, is_enumeration) - if info_type == 'page' or info_type == 'note' then +local function make_reference_head(info_type, is_enumeration, is_range) + if (info_type == 'page' or info_type == 'note') and not is_range then return format_prefix(info_type, is_enumeration) else return '' end end -local function make_reference_body(target, info_type) - +local function format_all_items_in_enumeration(enum, info_type) + local reference_body = '' + local enumerated_ref_spans = {} + for ref in string.gmatch(enum, + '[^%' .. config.references_enum_separator .. ']+') do + ref_span = pandoc.Span(ref, {['type'] = info_type}) + table.insert(enumerated_ref_spans, ref_span) + end + for i = 1, #enumerated_ref_spans do + target_in_enum = analyze_reference_span(enumerated_ref_spans[i]) + reference_body = reference_body .. format_reference(target_in_enum, info_type) + if i < #enumerated_ref_spans then + if i < #enumerated_ref_spans-1 then + reference_body = reference_body .. config.multiple_delimiter + else + reference_body = reference_body .. config.multiple_before_last + end + end + end + return reference_body end -local function make_reference_tail(info_type) +local function format_enumeration(target, info_type) + if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then + -- TODO + return format_enumeration_smart(target.first, info_type) + elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then + return format_all_items_in_enumeration(target.first, info_type) + end +end +local function make_reference_body(target, info_type) + local reference_body + if target.is_enumeration then + reference_body = format_enumeration(target, info_type) + else + reference_body = format_reference(target, info_type) + end + return reference_body end local function make_reference(span) @@ -478,10 +521,9 @@ local function make_reference(span) local target = analyze_reference_span(span) if not target.is_external then local info_type = span.attributes.type or config.default_info_type - local head = make_reference_head(info_type, target.is_enumeration) + local head = make_reference_head(info_type, target.is_enumeration, target.is_range) local body = make_reference_body(target, info_type) - local tail = make_reference_tail(info_type) - span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, head .. body .. tail) + span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, head .. body) return span end end From 666c612a02f495d95eed0d30d2bc061b48bd13ef Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 19 Oct 2022 20:35:31 +0200 Subject: [PATCH 07/21] Improvement of the documentation and update of the sample --- README.md | 155 ++++++++++++++++++++++++++++++++++++++++-------------- sample.md | 24 +++++---- 2 files changed, 129 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index c06f5ea..eb553f8 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,29 @@ currently supports the following target formats: * odt * opendocument -It doesn't permit to refer to references in other files: if you want to do this, use text-extrefs. +It does not permit to refer to references in other files: if you want to do this, use text-extrefs. -N.-B.: When opening for the first time a DOCX or ODT/Opendocument file produced by Pandoc with text-crossrefs, you probably will have to refresh the fields in order to get the correct values. In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. +## Format-specific preliminary notices + +### DOCX and ODT/Opendocument + +When opening for the first time a file produced by Pandoc with text-crossrefs, you probably will have to refresh the fields in order to get the correct values. In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. + +### TeX-based formats + +All references are wrapped in a macro named `\tcrfenum`. It has two optional arguments: the first one is the reference type, the second specifies whether the prefix (e.g. “p. ”) should be printed or not (can be set to `withprefix`, `noprefix`, `yes` or `no`). The default values for these arguments should match those of `tcrf-default-reftype` and `tcrf-default-prefixref` (resp. `page` and `yes`, i.e. `withprefix`). The mandatory argument of `\tcrfenum` is a group containing a list of groups. Each of them contain a reference (either a single reference or a range). Here are some valid invocations: + + * \tcrfenum\[note\]\[withprefix\]{{lblone}{lbltwo}{lblthree}} + * \tcrfenum\[page\]\[noprefix\]{{lblone}{lbltwo}{lblthree}} + * \tcrfenum\[noprefix\]{{lblone}{lbltwo}{lblthree}} (the first argument defaults to `page`) + * \tcrfenum{{lblone}{lbltwo}{lblthree}} (the second argument defaults to `withprefix`) + * \tcrfenum{{only-one}} (even if the enumeration is limited to one item, it must be inside its own group) + * \tcrfenum{{lblone to lbltwo}{lblthree}} (the first reference points to a range) + +It is up to you to define `\tcrfenum` in your preamble. If your target format is LaTeX, it should be possible to define it as a wrapper for the `\zcref` macro provided by [the zref-clever package](https://ctan.org/pkg/zref-clever). Alternatively, you can use [my implementation](TODO), which supports ConTeXt, LaTeX and other formats. Here are some hints about the implementation: + + * [The `\tcrfenum` macro is supposed to output the numbers along with the prefixes and delimiters (e.g. “p. ” and “–”)]{#prefixes-tex}; + * In ConTeXt, there is no way to retrieve the note number from a `\reference` or a `\pagereference` contained in the note as is customary in LaTeX. to work around this, footnotes are labelled automatically with the first identifier attached to a span in the note suffixed with `_note`. ## Usage @@ -34,97 +54,152 @@ identifier composed of alphanumeric characters, periods, colons, underscores and You can refer to it using another span with class `ref` containing the target's identifier. If the targetted span is part of a footnote, you can refer to it either by page or by note number according to -the value of the `type` attribute (defaults to `page`). For instance, this: +the value of the `reftype` attribute (defaults to `page`). For instance, this: ``` markdown -See [publication]{.ref} for the publication date. I gave my -opinion in [my-evaluation]{.ref type=note}, [my-evaluation]{.ref}. +See [publication]{.tcrf} for the publication date. I gave my +opinion in [my-evaluation]{.tcrf reftype=note}, [my-evaluation]{.tcrf}. ``` -will render in LaTeX output: +will render in ConTeXt or LaTeX output: ``` tex -See p. \pageref{publication} for the publication date. I expressed -my thoughts about it in \ref{my-evaluation}, -p. \pageref{my-evaluation}. +See \tcrfenum{{publication}} for the publication date. I expressed +my thoughts about it in \tcrfenum[note]{{my-evaluation}}, +\tcrfenum{{my-evaluation}}. ``` If you want to give a reference by note and page number like in the example above, you can also use the following shorthand: ```md -[my-evaluation]{.ref type=pagenote} +[my-evaluation]{.tcrf reftype=pagenote} ``` You can refer to headers as well using either explicit or automatically generated identifiers (see Pandoc user’s guide). +To suppress the prefixes (e.g. “p. ”), you can set the `prefixref` attribute to `no` (defaults to `yes`). It can be useful, for instance, for small manually formatted indexes[^1]: + +``` markdown +Gaboriau: [publication, my-evaluation, reception]{.tcrf prefixref=no} +``` + +[^1]: About the comma-delimited syntax used in this example, see [the section on enumerations below](#enums). + ### Page ranges You can refer to a page range like this: ``` markdown -If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.ref}. +If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.tcrf}. ``` The separator (here `>`) can be set to any string composed of characters other than alphanumeric, period, colon, underscore, hyphen and space. -In LaTeX and ConTeXt output, the page range will be printed as a simple page reference if the page numbers are identical. You can provide your own definition of the macro `\tcrfpagerangeref[]{}{}` in the preamble. In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by the means of automatic search and replace with regular expressions. +In LaTeX and ConTeXt output, the above-mentionned `\tcrfenum` macro should be defined so that the range is printed as a simple page reference if the page numbers are identical. The syntax of a range is: -## Enumerations +``` tex +\tcrfenum{{publication to reception}} +``` -Rather +In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by automatically searching and replacing duplicates with regular expressions and/or macros. -Enumerations are only supported for references to page and note numbers. +### Enumerations {#enums} + +You can enumerate several references as a comma-delimited list, for instance: + +``` markdown +[ref-one, ref-two>ref-three, ref-four]{.tcrf} +``` + +In DOCX and ODT/Opendocument output, all these references will be printed, potentially resulting in unnecessary repetitions. +In TeX-based output formats, they will be wrapped in `\tcrfenum` like this: + +``` tex +\tcrfenum{{ref-one}{ref-two to ref-three}{ref-four}} +``` ## Customization +### Common options + The following metadata fields can be set as strings: + * `tcrf-references-enum-separator`: + * the string between two references in an enumeration in a reference span; can be composed of any characters not authorized in an identifier; + * defaults to `, ` (with a space after the comma). + * `tcrf-references-range-separator`: + * the string used to separate two references in a reference span; can be composed of any characters not authorized in an identifier; + * defaults to `>`. + * `tcrf-only-explicit-labels`: + * set it to `true` if you want that _tcrf_ handle only spans with class `label`; + * defaults to `false`. + * `tcrf-default-prefixref`: + * default value for the `prefixref` attribute; + * defaults to `yes`. + * `tcrf-default-reftype`: + * default value for the `reftype` attribute; + * defaults to `page`. + * `tcrf-filelabel-ref-separator`: + * only useful in conjunction with the text-exrefs filter; + * separator between external files' labels and references; + * defaults to `::`. + +### Options specific to DOCX and ODT/Opendocument + +Here are some metadata fields only useful in conjunction with `docx`, `odt` and `opendocument` formats (see [above](#prefixes-tex) why they are ignored with `context` and `latex`): + * `tcrf-page-prefix`: * “page” prefix; * defaults to `p. `. * `tcrf-pages-prefix`: * “pages” prefix; - * defaults to `p. `. + * defaults to `pp. `. * `tcrf-note-prefix`: * “note” prefix; * defaults to `n. `. * `tcrf-notes-prefix`: * “notes” prefix; - * defaults to `n. `. + * defaults to `nn. `. * `tcrf-pagenote-separator`: - * the separator between the references when `type` is set to `pagenote`; + * the separator between the references when `reftype` is set to `pagenote`; * defaults to `, `. * `tcrf-pagenote-at-end`: * the string printed at the end of a pagenote reference; - * defaults to an empty string, can be used to achieve something like *n. 3 (p. 5)*. - * `tcrf-pagenote-order`: - * the order in which the references to note and page are printed; - * defaults to `pagefirst`, can be set to `notefirst`. - * `tcrf-references-range-separator`: - * the string used to separate two references in a reference span; can be composed of any character not authorized in an identifier other than space or tab; - * defaults to `>`. + * defaults to the empty string, can be used to achieve something like *n. 3 (p. 5)*. + * `tcrf-pagenote-factorize-first-prefix-in-enum`: + * defines if the prefixes of the type printed first in a reference to page and note should be repeated (e.g. “p. 6, n. 1 and p. 9, n. 3”) or expressed globally at the beginning of the enumeration (e.g. “pp. 6, n. 1 and 9, n. 3”); + * defaults to `no`, can be set to `yes`. + * `tcrf-pagenote-first-type`: + * the information that is printed first in references to page and note; + * defaults to `page`, can be set to `note`. * `tcrf-range-separator`: - * the string inserted between to page numbers in a range; - * defaults to `-`. + * the string inserted between the page numbers in a range; + * defaults to `–`. * `tcrf-references-enum-separator`: - * the character used to separate the elements of an enumeration in a reference span; can be any character not authorized in an identifier other than space or tab; - * defaults to `;`. + * the string used to separate the elements of an enumeration in a reference span; + * defaults to a comma followed by a space. * `tcrf-multiple-delimiter`: * the string inserted between two elements (but the two last ones) in an enumeration; * defaults to a comma followed by a space. * `tcrf-multiple-before-last`: * the string inserted between the two last elements in an enumeration; * defaults to `and` surrounded with spaces. - * `tcrf-only-explicit-labels`: - * set it to `true` if you want that _tcrf_ handle only spans with class `label`; - * defaults to `false`. - * `tcrf-default-info-type`: - * default value for the `type` attribute (`note`, `page` or `pagenote`); - * defaults to `page`. - * `tcrf-filelabel-ref-separator`: - * only useful in conjunction with the text-exrefs filter; - * separator between external files' labels and references; - * defaults to `::`. + +### Options specific to the formats based on TeX + +Since TeX is extensible, you may wish to support types other than `page`, `note` and `pagenote` for ConTeXt and LaTeX output. `tcrf-additional-types` can be provided with a list of supplementary accepted types, e.g.: + +``` yaml +tcrf-additional-types: +- line +- figure +``` + +In addition, the following metadata field can be used to control the rendering of ranges of labels in `\tcrfenum`: + + * `tcrf-range-delim-tcrfenum`: + * the delimiter between the labels of a range in the list of references passed to `\tcrfenum`; + * defaults to ` to ` (mind the spaces). ## Compatibility with other filters @@ -152,6 +227,6 @@ not that: [@Jones1973, p. 5-70[]{#ref-to-jones}; @Doe2004] ``` -You can set classes and attributes to your spans other than those defined by text-crossrefs (for instance `[some text]{#to-be-referred-to .highlighted color=red}` or `[reference]{.ref color=red}`). No span is removed. +You can set classes and attributes to your spans other than those defined by text-crossrefs (for instance `[some text]{#to-be-referred-to .highlighted color=red}` or `[reference]{.tcrf color=red}`). No span is removed. Text-crossrefs is fully compatible with text-extrefs. Whenever possible, when a metadata is not set for text-extrefs, its value is taken from its text-crossrefs equivalent, so that you don't need to duplicate similar variables. diff --git a/sample.md b/sample.md index e78a2cf..781f7fb 100644 --- a/sample.md +++ b/sample.md @@ -3,6 +3,8 @@ tcrf-pagenote-separator: '\ (' tcrf-pagenote-at-end: ')' --- +(About the notes, see [toc-notes-begin>toc-notes-end]{.tcrf}.) + Émile Gaboriau published [_L'Affaire Lerouge_ in 1866]{#publication}.[^1] @@ -10,20 +12,22 @@ tcrf-pagenote-at-end: ')' [It was very popular.]{#reception} -See [publication]{.ref} for the publication date. I expressed -my thoughts about it in [my-evaluation]{.ref type=pagenote}. +See [publication]{.tcrf} for the publication date. I expressed +my thoughts about it in [my-evaluation]{.tcrf reftype=pagenote}. -If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.ref}. +If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.tcrf}. Here are some precisions.[^2] [^2]: [Whatever format]{#format} you choose, you can [refer to a note]{#refer-to-note} by the identifier of [any of its spans. You can even [nest spans]{#nested-spans}!]{#which-identifier} -I want to refer to a note: +[I want to refer to a note]{#toc-notes-begin}: - * How can I refer to a note by its number? → See [refer-to-note]{.ref}. - * What formats are supported? → See [format]{.ref}. - * What if the note contains multiple spans with identifiers? → See [which-identifier]{.ref}. - * What happens if a span in contained in a span? → See [nested-spans]{.ref}. - * What are the notes? → [my-evaluation;format;refer-to-note]{.ref type=note} - * Where are the notes? → [my-evaluation;format]{.ref} + * How can I refer to a note by its number? → See [refer-to-note]{.tcrf}. + * What formats are supported? → See [format]{.tcrf}. + * What if the note contains multiple spans with identifiers? → See [which-identifier]{.tcrf}. + * What happens if a span in contained in a span? → See [nested-spans]{.tcrf}. + * What are the notes? → [my-evaluation, format, refer-to-note]{.tcrf reftype=note} + * Where are the notes? → [my-evaluation, format]{.tcrf} + +[]{#toc-notes-end} From 0d30b8cc94936f40750bfd04ffc91f22fca3944a Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 19 Oct 2022 20:36:49 +0200 Subject: [PATCH 08/21] Code refactoring and proper handling of labels on footnotes in ConTeXt --- text-crossrefs.lua | 647 +++++++++++++++++++++++---------------------- 1 file changed, 329 insertions(+), 318 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index 167cdfd..981d129 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -1,16 +1,11 @@ --- TODO : permettre la citation de références multiples avec un seul préfixe --- [ref-one, ref-two>ref-four, ref-three]{.ref} → pp. 1, 3-6 et 12 --- Compléter README et test une fois que ce sera fait. --- TODO : créer des commandes latex et context pour les énumérations --- de notes et de pages sur le modèle de \tcrfpagerangeref +local stringify = pandoc.utils.stringify --- Begin of initialization - -local IDENTIFIER_PATTERN = '[%w_.:-]+' +local TEXT_CROSSREF_CLASS = 'tcrf' +local REF_TYPE_ATTR = 'reftype' +local PREFIXED_ATTR = 'prefixref' local RAW_ATTRIBUTE -local IS_LABEL_SET_BY_PANDOC -local LABEL_TEMPLATE -local NOTELABEL_TEMPLATE + +-- Configuration local function define_raw_attribute() if FORMAT == 'native' then @@ -41,38 +36,43 @@ local function define_label_template() end end -define_raw_attribute() -define_label_template() - --- End of initialization - --- Configuration - local config = { page_prefix = 'p. ', - pages_prefix = 'p. ', + pages_prefix = 'pp. ', note_prefix = 'n. ', - notes_prefix = 'n. ', - pagenote_order = 'pagefirst', + notes_prefix = 'nn. ', + pagenote_first_type = 'page', pagenote_separator = ', ', pagenote_at_end = '', + pagenote_factorize_first_prefix_in_enum = 'no', multiple_delimiter = ', ', multiple_before_last = ' and ', references_range_separator = '>', - range_separator = '-', - references_enum_separator = ';', + range_separator = '–', + references_enum_separator = ', ', only_explicit_labels = 'false', - default_info_type = 'page', - filelabel_ref_separator = '::' + default_reftype = 'page', + default_prefixref = 'yes', + filelabel_ref_separator = '::', + range_delim_tcrfenum = ' to ' +} + +local accepted_types = { + page = true, + note = true, + pagenote = true } local function format_config_to_openxml() - to_format = { 'page_prefix', + local to_format = { 'page_prefix', 'pages_prefix', 'note_prefix', + 'notes_prefix', 'pagenote_separator', 'pagenote_at_end', - 'range_separator' } + 'range_separator', + 'multiple_delimiter', + 'multiple_before_last' } for i = 1, #to_format do config[to_format[i]] = '' .. config[to_format[i]] .. '' @@ -83,11 +83,13 @@ local function set_configuration_item_from_metadata(item, metamap) metakey = 'tcrf-' .. string.gsub(item, '_', '-') if metamap[metakey] then -- The metadata values are Str in MetaInlines. - config[item] = metamap[metakey][1].c + config[item] = metamap[metakey][1].text end end local function configure(metadata) + define_raw_attribute() + define_label_template() for item, _ in pairs(config) do set_configuration_item_from_metadata(item, metadata) end @@ -98,65 +100,15 @@ end -- End of configuration --- Extensions for the output document's format - -local function define_tex_macros(document) - if RAW_ATTRIBUTE == 'context' then - local footnote_redefinition = '\\let\\oldfootnote\\footnote\n' .. - '\\define[2]\\footnote{\\oldfootnote[#2]{#1}%\n' .. - '\\expandafter\\edef\\csname #2pagenumber\\endcsname{\\userpage}}\n' - local predefined_strings = - '\\define\\tcrfpage{' .. config.page_prefix .. '}\n' .. - '\\define\\tcrfpages{' .. config.pages_prefix .. '}\n' .. - '\\define\\tcrfrangesep{' .. config.range_separator .. '}\n' - local range_ref = '\\ifdefined\\tcrfpagerangeref\\else\n' .. - '\\define[2]\\tcrfpagerangeref{' .. - '\\if' .. - '\\csname #1pagenumber\\endcsname' .. - '\\csname #2pagenumber\\endcsname\n' .. - '\\tcrfpage\\at[#1]\n' .. - '\\else\n' .. - '\\tcrfpages\\at[#1]\\tcrfrangesep\\at[#2]\\fi}\n' .. - '\\fi\n' - local macros_block = pandoc.RawBlock('context', - footnote_redefinition .. - predefined_strings .. - range_ref) - table.insert(document.blocks, 1, macros_block) - elseif RAW_ATTRIBUTE == 'latex' then - local predefined_strings = - '\\newcommand*{\\tcrfpage}{' .. config.page_prefix .. '}\n' .. - '\\newcommand*{\\tcrfpages}{' .. config.pages_prefix .. '}\n' .. - '\\newcommand*{\\tcrfrangesep}{' .. config.range_separator .. '}\n' - local label_redefinition = '\\let\\oldlabel\\label\n' .. - '\\renewcommand*{\\label}[1]{\\oldlabel{#1}%\n' .. - '\\expandafter\\xdef\\csname #1pagenumber\\endcsname{\\thepage}}\n' - local range_ref = '\\ifdefined\\tcrfpagerangeref\\else\n' .. - '\\newcommand*{\\tcrfpagerangeref}[2]{%\n' .. - '\\if' .. - '\\csname #1pagenumber\\endcsname' .. - '\\csname #2pagenumber\\endcsname\n' .. - '\\tcrfpage\\pageref{#1}\n' .. - '\\else\n' .. - '\\tcrfpages\\pageref{#1}\\tcrfrangesep\\pageref{#2}\\fi}\n' .. - '\\fi\n' - local macros_block = pandoc.RawBlock('latex', - predefined_strings .. - label_redefinition .. - range_ref) - table.insert(document.blocks, 1, macros_block) - end - return document -end - --- End of the extensions for the output document's format - --- Identifiers +-- Preprocessing of identifiers on notes +-- Necessary for those output format where a note can be referred to +-- only via an identifier directly attached to it, not to its content local spans_to_note_labels = {} local current_odt_note_index = 0 local is_first_span_in_note = true local current_note_label +local text_to_note_labels = {} local function map_span_to_label(span) if RAW_ATTRIBUTE == 'opendocument' then @@ -174,7 +126,7 @@ local function map_spans_to_labels(container) for i = 1, #container.content do -- The tests must be separate in order to support spans inside spans. if container.content[i].t == 'Span' - and container.content[i].identifier ~= '' + and container.content[i].identifier then map_span_to_label(container.content[i]) end @@ -187,7 +139,8 @@ end local function map_spans_to_notelabels(note) if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'opendocument' - or RAW_ATTRIBUTE == 'openxml' then + or RAW_ATTRIBUTE == 'openxml' + then is_first_span_in_note = true map_spans_to_labels(note) current_odt_note_index = current_odt_note_index + 1 @@ -195,12 +148,13 @@ local function map_spans_to_notelabels(note) end local function make_label(label) - if IS_LABEL_SET_BY_PANDOC then - return pandoc.Str('') - else - label_rawcode = string.gsub(LABEL_TEMPLATE, '{{label}}', label) - return pandoc.RawInline(RAW_ATTRIBUTE, label_rawcode) + -- pandoc.Null() cannot be used here because it is a Block element. + local label_pandoc_object = pandoc.Str('') + if not IS_LABEL_SET_BY_PANDOC then + local label_rawcode = string.gsub(LABEL_TEMPLATE, '{{label}}', label) + label_pandoc_object = pandoc.RawInline(RAW_ATTRIBUTE, label_rawcode) end + return label_pandoc_object end local function labelize_span(span) @@ -211,26 +165,12 @@ local function labelize_span(span) end end -local function has_class(elem, class) - if elem.classes then - for i = 1, #elem.classes do - if elem.classes[i] == class then - return true - end - end - return false - else - error('function has_class used on an element of type ' .. - elem.t .. ' that cannot have classes.') - end -end - local current_note_labels = {} local collect_note_labels = { Span = function(span) - if span.identifier ~= '' and - (config.only_explicit_labels == 'false' or has_class(span, 'label')) + if span.identifier ~= '' + and (config.only_explicit_labels == 'false' or span.classes:includes('label')) then table.insert(current_note_labels, span.identifier) end @@ -240,302 +180,373 @@ local collect_note_labels = { local function make_notelabel(pos) local raw_code = '' if pos == 'begin' then - if RAW_ATTRIBUTE == 'openxml' then - raw_code = string.gsub( - '', - '{{label}}', current_note_labels[#current_note_labels]) - end + raw_code = string.gsub( + '', + '{{label}}', current_note_labels[1]) elseif pos == 'end' then - if RAW_ATTRIBUTE == 'context' then - local label = current_note_labels[1] .. '_note' - raw_code = '{' .. label .. '}' - elseif RAW_ATTRIBUTE == 'openxml' then - raw_code = string.gsub('', - '{{label}}', current_note_labels[1]) - end + raw_code = string.gsub('', + '{{label}}', current_note_labels[1]) end return pandoc.RawInline(RAW_ATTRIBUTE, raw_code) end local function labelize_note(note) - local label_begin = make_notelabel('begin') - local label_end = make_notelabel('end') - return { label_begin, note, label_end } + local labelized_note + if RAW_ATTRIBUTE == 'openxml' then + local label_begin = make_notelabel('begin') + local label_end = make_notelabel('end') + labelized_note = { label_begin, note, label_end } + elseif RAW_ATTRIBUTE == 'context' then + labelized_note = pandoc.utils.blocks_to_inlines(note.content) + labelized_note:insert(1, pandoc.RawInline('context', '\\footnote[note:' .. current_note_labels[1] .. ']{')) + labelized_note:insert(pandoc.RawInline('context', '}')) + end + return labelized_note +end + +local function map_text_to_note_labels(current_note_labels) + local note_label = 'note:' .. current_note_labels[1] + for _, text_label in ipairs(current_note_labels) do + text_to_note_labels[text_label] = note_label + end end function set_notelabels(note) current_note_labels = {} pandoc.walk_inline(note, collect_note_labels) if #current_note_labels > 0 then + map_text_to_note_labels(current_note_labels) return labelize_note(note) end end --- End of identifiers-related code +-- End of preprocessing of identifiers on notes --- References +-- Gathering of data from the references span -local function is_reference_valid(ref) - if string.find(ref, '^[' .. IDENTIFIER_PATTERN .. ']') then - error('text-crossrefs.lua: Invalid character in reference: ' .. ref .. - '\nIdentifier and reference names can only contain' .. - ' alphanumerical characters, periods, underscores and hyphens.\n') - else - return true - end +local function new_ref(anchor, end_of_range) + -- A ref is a string-indexed table containing an "anchor" field + -- and an optionnal "end_of_range" field. + -- When "end_of_range" is non-nil, the ref is a range. + local ref = {} + ref.anchor = anchor + ref.end_of_range = end_of_range + return ref end -local function is_ref_external(rawref) - if string.find(rawref, config.filelabel_ref_separator, 1, true) then +local function is_ref_external(raw_references) + if string.find(raw_references, config.filelabel_ref_separator, 1, true) then return true else return false end end -local function is_ref_range(rawref) - if string.find(rawref, config.references_range_separator, 1, true) then - return true - else - return false +local function parse_possible_range(reference) + -- If reference is a string representing a range, + -- returns the strings representing the boundaries of the range. + -- Else, returns the string. + local range_first, range_second = nil + local delim_beg, delim_end = string.find(reference, + config.references_range_separator, + 1, true) + if delim_beg then + range_first = string.sub(reference, 1, delim_beg - 1) + range_second = string.sub(reference, delim_end + 1) end + return (range_first or reference), range_second end -function get_first_reference_end_index(range_separator_index) - if range_separator_index then - return range_separator_index - 1 - end -end - -local function get_first_reference(rawref) - local _, file_ref_separator_index = - string.find(rawref, config.filelabel_ref_separator, 1, true) - local range_separator_index, _ = - string.find(rawref, config.references_range_separator, 1, true) - local ref = string.sub(rawref, - (file_ref_separator_index or 0) + 1, - get_first_reference_end_index(range_separator_index)) - if is_reference_valid(ref) then return ref end -end - -local function get_second_reference(rawref) - local second_ref_begin_index - local _, file_ref_separator_index = - string.find(rawref, config.filelabel_ref_separator, 1, true) - if file_ref_separator_index then - _, file_ref_separator_index = - string.find(rawref, - config.filelabel_ref_separator, - config.file_ref_separator_index + 1, - true) - second_ref_begin_index = file_ref_separator_index + 1 - else - local _, range_separator_index, _ = - string.find(rawref, config.references_range_separator, 1, true) - second_ref_begin_index = range_separator_index + 1 - end - local ref = string.sub(rawref, second_ref_begin_index) - if is_reference_valid(ref) then return ref end -end - -local function is_ref_enumeration(raw_reference) - if string.match(raw_reference, '%' .. config.references_enum_separator) then - return true - else - return false - end -end - -local function analyze_reference_span(reference_span) - if #reference_span.content == 1 and reference_span.content[1].t == 'Str' then - raw_reference = reference_span.content[1].c - analyzed_reference = {} - analyzed_reference.is_external = is_ref_external(raw_reference) - analyzed_reference.is_range = is_ref_range(raw_reference) - analyzed_reference.is_enumeration = is_ref_enumeration(raw_reference) - if analyzed_reference.is_external then - analyzed_reference.filelabel = get_extfilelabel(raw_reference) +local function parse_next_reference(raw_references, beg_of_search) + -- Returns the ref corresponding to the next reference string + -- and the index which the parsing should be resumed at. + local current_ref = false + local next_ref_beg = nil + if beg_of_search < #raw_references then + -- The delimiter can be composed of more than one character. + local delim_beg, delim_end = string.find(raw_references, + config.references_enum_separator, + beg_of_search, true) + if delim_beg then + reference = string.sub(raw_references, beg_of_search, delim_beg - 1) + next_ref_beg = delim_end + 1 + else + reference = string.sub(raw_references, beg_of_search) + next_ref_beg = #raw_references end - analyzed_reference.first = get_first_reference(raw_reference) - if analyzed_reference.is_range then - analyzed_reference.second = get_second_reference(raw_reference) - end - return analyzed_reference - else - error('The content of a span with class ref must be a plain string.') + current_ref = new_ref(parse_possible_range(reference)) end + return current_ref, next_ref_beg end -local function insert_page_target_in_xml(target) +local function parse_references_enum(raw_references) + -- raw_refs is a string consisting of a list of single references or ranges. + -- Returns an array of refs produced by "new_ref" above. + local parsed_refs = {} + local current_ref, next_ref_beg = parse_next_reference(raw_references, 1) + while current_ref do + table.insert(parsed_refs, current_ref) + current_ref, next_ref_beg = + parse_next_reference(raw_references, next_ref_beg) + end + return parsed_refs +end + +local function error_on_attr(attr_key, attr_value, span_content) + error('Invalid value "' .. attr_value .. '" for attribute "' .. attr_key .. + '" in the span with class "' .. TEXT_CROSSREF_CLASS .. + '" whose content is "' .. stringify(span_content) .. '".') +end + +local function get_ref_type(span) + local ref_type = span.attributes[REF_TYPE_ATTR] or config.default_reftype + if not accepted_types[ref_type] then + error_on_attr(REF_TYPE_ATTR, ref_type_attr_value, span.content) + end + return ref_type +end + +local function if_prefixed(span) + local prefixed_attr_value = span.attributes[PREFIXED_ATTR] or config.default_prefixref + if prefixed_attr_value ~= 'yes' and prefixed_attr_value ~= 'no' then + error_on_attr(PREFIXED_ATTR, prefixed_attr_value, span.content) + end + local is_prefixed = true + if prefixed_attr_value == 'no' then is_prefixed = false end + return is_prefixed +end + +-- End of gathering of data from the references span + +-- Formatting references as raw inlines. + +local function make_tcrfenum_first_arg(ref_type) + local ref_type_is_explicit = ref_type ~= config.default_reftype + local tcrfenum_first_arg = '' + if ref_type_is_explicit then + tcrfenum_first_arg = '[' .. ref_type .. ']' + end + return tcrfenum_first_arg +end + +local function make_tcrfenum_second_arg(is_prefixed) + local is_prefixed_is_explicit = is_prefixed ~= (config.default_prefixref == 'yes') + local tcrfenum_second_arg = '' + local is_prefixed_string = '' + if is_prefixed_is_explicit then + if is_prefixed then + is_prefixed_string = 'withprefix' + else + is_prefixed_string = 'noprefix' + end + tcrfenum_second_arg = '[' .. is_prefixed_string .. ']' + end + return tcrfenum_second_arg +end + +local function make_tcrfenum_references_list(refs, ref_type) + local tcrfenum_references_list = '' + for i = 1, #refs do + local ref = refs[i] + local anchor = ref.anchor + if FORMAT == 'context' + and (ref_type == 'note' or ref_type == 'pagenote') + then + anchor = text_to_note_labels[anchor] + end + local texified_ref = '{' .. anchor + if ref.end_of_range then + texified_ref = texified_ref .. config.range_delim_tcrfenum .. ref.end_of_range + end + texified_ref = texified_ref .. '}' + tcrfenum_references_list = tcrfenum_references_list .. texified_ref + end + return tcrfenum_references_list +end + +local function make_raw_content_tex(refs, ref_type, is_prefixed) + local texified_references = '' + texified_references = '\\tcrfenum' + .. make_tcrfenum_first_arg(ref_type) + .. make_tcrfenum_second_arg(is_prefixed) + .. '{' .. make_tcrfenum_references_list(refs, ref_type) .. '}' + return texified_references +end + +--- TODO : début de section à revoir + +local function make_prefix_xml(ref_type, is_plural) + local prefix = '' + if is_plural then + prefix = config[ref_type .. 's_prefix'] + else + prefix = config[ref_type .. '_prefix'] + end + return prefix +end + +local function make_page_reference_xml(target, is_prefixed) + local xml_page_ref = '' + if is_prefixed then + xml_page_ref = make_prefix_xml('page', false) + end if RAW_ATTRIBUTE == 'opendocument' then - return '000' elseif RAW_ATTRIBUTE == 'openxml' then - return '' .. + xml_page_ref = xml_page_ref .. + '' .. ' PAGEREF ' .. target .. ' \\h ' .. '' .. '000' .. '' end + return xml_page_ref end -local function format_prefix(info_type, is_enumeration) - if not is_enumeration then - return config[info_type .. '_prefix'] - elseif RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then - return '' - elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then - return config[info_type .. 's_prefix'] +local function make_pagerange_reference_xml(first, second, is_prefixed) + local prefix = '' + if is_prefixed then prefix = make_prefix_xml('page', true) end + return prefix .. make_page_reference_xml(first, false) .. + config.range_separator .. make_page_reference_xml(second, false) +end + +local function make_note_reference_xml(target, is_prefixed) + local note_ref_xml = '' + if is_prefixed then + note_ref_xml = make_prefix_xml('note', false) end -end - -local function format_page_reference(target) - if RAW_ATTRIBUTE == 'context' then - return '\\at[' .. target .. ']' - elseif RAW_ATTRIBUTE == 'latex' then - return '\\pageref{' .. target .. '}' - elseif RAW_ATTRIBUTE == 'opendocument' then - return insert_page_target_in_xml(target) - elseif RAW_ATTRIBUTE == 'openxml' then - return insert_page_target_in_xml(target) - end -end - -local function format_pagerange_reference(first, second, is_prefixed) - if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then - local bracketed_arg = '' - if is_prefixed then bracketed_arg = 'prefixed' end - -- TODO : implémenter l'argument entre crochets - return '\\tcrfpagerangeref[' .. bracketed_arg .. ']{' .. first .. '}{' .. second .. '}' - elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then - local to_return = '' - if is_prefixed then to_return = config.pages_prefix end - return to_return .. insert_page_target_in_xml(first) .. - config.range_separator .. insert_page_target_in_xml(second) - end -end - -local function format_note_reference(target) - if RAW_ATTRIBUTE == 'context' then - return '\\in[' .. spans_to_note_labels[target] .. '_note' .. ']' - elseif RAW_ATTRIBUTE == 'latex' then - return '\\ref{' .. target .. '}' - elseif RAW_ATTRIBUTE == 'opendocument' then - return '000' + (spans_to_note_labels[target] or '') .. '">000' elseif RAW_ATTRIBUTE == 'openxml' then - return + note_ref_xml = note_ref_xml .. '' .. ' NOTEREF ' .. - target .. '_Note' .. ' \\h ' .. + (spans_to_note_labels[target] or '') .. '_Note' .. ' \\h ' .. '' .. '000' .. '' end + return note_ref_xml end -local function format_pagenote_reference(target) - if config.pagenote_order == 'pagefirst' then - return format_prefix('page', false) .. format_page_reference(target) .. - config.pagenote_separator .. format_prefix('note', false) .. - format_note_reference(target) .. config.pagenote_at_end - elseif config.pagenote_order == 'notefirst' then - return format_prefix('note', false) .. format_note_reference(target) .. - config.pagenote_separator .. format_prefix('page', false) .. - format_page_reference(target) .. config.pagenote_at_end +local function make_pagenote_reference_xml(target, is_prefixed) + local pagenote_ref_xml = '' + if is_prefixed then + pagenote_ref_xml = make_prefix_xml(config.pagenote_first_type, false) + end + if config.pagenote_first_type == 'page' then + pagenote_ref_xml = pagenote_ref_xml .. + make_page_reference_xml(target, false) .. + config.pagenote_separator .. make_note_reference_xml(target, true) .. + config.pagenote_at_end + elseif config.pagenote_first_type == 'note' then + pagenote_ref_xml = pagenote_ref_xml .. + make_note_reference_xml(target, false) .. + config.pagenote_separator .. make_page_reference_xml(target, true) .. + config.pagenote_at_end else - error('tcrf-pagenote-order must be set either to pagefirst or notefirst.') + error('“tcrf-pagenote-first-type” must be set either to “page” or “note”.') end + return pagenote_ref_xml end -local function format_reference(target, info_type) - if info_type == 'page' and target.is_range then - return format_pagerange_reference(target.first, target.second, - not target.is_enumeration) - elseif info_type == 'page' then - return format_page_reference(target.first) - elseif info_type == 'note' then - return format_note_reference(target.first) - elseif info_type == 'pagenote' then - return format_pagenote_reference(target.first) - else - error('Invalid value for attribute type in span with class ref: ' .. - info_type) +local function make_reference_xml(ref, ref_type, is_prefixed) + local reference_xml = '' + if ref_type == 'page' and ref.end_of_range then + reference_xml = + make_pagerange_reference_xml(ref.anchor, ref.end_of_range, is_prefixed) + elseif ref_type == 'page' then + reference_xml = make_page_reference_xml(ref.anchor, is_prefixed) + elseif ref_type == 'note' then + reference_xml = make_note_reference_xml(ref.anchor, is_prefixed) + elseif ref_type == 'pagenote' then + reference_xml = make_pagenote_reference_xml(ref.anchor, is_prefixed) end + return reference_xml end -local function make_reference_head(info_type, is_enumeration, is_range) - if (info_type == 'page' or info_type == 'note') and not is_range then - return format_prefix(info_type, is_enumeration) - else - return '' +local function make_global_prefix_xml(ref_type) + local global_prefix_xml = '' + local prefix_type = ref_type + if ref_type == 'pagenote' then + prefix_type = config.pagenote_first_type end + global_prefix_xml = make_prefix_xml(prefix_type, true) + return global_prefix_xml end -local function format_all_items_in_enumeration(enum, info_type) - local reference_body = '' - local enumerated_ref_spans = {} - for ref in string.gmatch(enum, - '[^%' .. config.references_enum_separator .. ']+') do - ref_span = pandoc.Span(ref, {['type'] = info_type}) - table.insert(enumerated_ref_spans, ref_span) - end - for i = 1, #enumerated_ref_spans do - target_in_enum = analyze_reference_span(enumerated_ref_spans[i]) - reference_body = reference_body .. format_reference(target_in_enum, info_type) - if i < #enumerated_ref_spans then - if i < #enumerated_ref_spans-1 then - reference_body = reference_body .. config.multiple_delimiter +local function make_references_xml(refs, ref_type, is_prefixed) + local references_xml = '' + for i = 1, #refs do + references_xml = references_xml .. + make_reference_xml(refs[i], ref_type, is_prefixed) + if i < #refs then + if i < #refs - 1 then + references_xml = references_xml .. config.multiple_delimiter else - reference_body = reference_body .. config.multiple_before_last + references_xml = references_xml .. config.multiple_before_last end end end - return reference_body + return references_xml end -local function format_enumeration(target, info_type) +--- Fin de section à revoir + +local function make_raw_content_xml(refs, ref_type, is_prefixed) + local is_enumeration = #refs > 1 + local global_prefix = '' + if is_enumeration and is_prefixed + and (ref_type ~= 'pagenote' + or pagenote_factorize_first_prefix_in_enum == 'yes') + then + global_prefix = make_global_prefix_xml(ref_type) + is_prefixed = false + end + local references_raw_xml = make_references_xml(refs, ref_type, is_prefixed) + return global_prefix .. references_raw_xml +end + +local function make_raw_content(refs, ref_type, is_prefixed) + local raw_content = '' if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then - -- TODO - return format_enumeration_smart(target.first, info_type) - elseif RAW_ATTRIBUTE == 'opendocument' or RAW_ATTRIBUTE == 'openxml' then - return format_all_items_in_enumeration(target.first, info_type) - end -end - -local function make_reference_body(target, info_type) - local reference_body - if target.is_enumeration then - reference_body = format_enumeration(target, info_type) + raw_content = make_raw_content_tex(refs, ref_type, is_prefixed) else - reference_body = format_reference(target, info_type) + raw_content = make_raw_content_xml(refs, ref_type, is_prefixed) end - return reference_body + return raw_content end -local function make_reference(span) - if has_class(span, 'ref') then - local target = analyze_reference_span(span) - if not target.is_external then - local info_type = span.attributes.type or config.default_info_type - local head = make_reference_head(info_type, target.is_enumeration, target.is_range) - local body = make_reference_body(target, info_type) - span.content[1] = pandoc.RawInline(RAW_ATTRIBUTE, head .. body) - return span - end - end +local function format_references(refs, ref_type, is_prefixed) + local raw_content = make_raw_content(refs, ref_type, is_prefixed) + return pandoc.RawInline(RAW_ATTRIBUTE, raw_content) end --- End of references-related code +local function format_enum(span) + -- A reference is a Str contained in a span representing a label or a range of labels. + -- A ref is a ref object produced by the function "new_ref" defined above. + if span.classes:includes(TEXT_CROSSREF_CLASS) + and not(is_ref_external(stringify(span.content))) + then + local refs = parse_references_enum(stringify(span.content)) + local ref_type = get_ref_type(span) + local is_prefixed = if_prefixed(span) + span.content = format_references(refs, ref_type, is_prefixed) + end + return span +end return { { Meta = configure }, - { Pandoc = define_tex_macros }, { Note = set_notelabels }, { Note = map_spans_to_notelabels }, { Span = labelize_span }, - { Span = make_reference } + { Span = format_enum } } From e9cfad51cda2d7ee0eb11de34d6f7a0aa0f417e5 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sat, 29 Oct 2022 18:56:13 +0200 Subject: [PATCH 09/21] ConTeXt: Revert to the strategy of inverting the label and the footnote content Users will be able to use block content in labelized footnotes again. --- README.md | 20 ++++++++++++- text-crossrefs.lua | 72 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 76 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index eb553f8..c406a8b 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,25 @@ All references are wrapped in a macro named `\tcrfenum`. It has two optional arg It is up to you to define `\tcrfenum` in your preamble. If your target format is LaTeX, it should be possible to define it as a wrapper for the `\zcref` macro provided by [the zref-clever package](https://ctan.org/pkg/zref-clever). Alternatively, you can use [my implementation](TODO), which supports ConTeXt, LaTeX and other formats. Here are some hints about the implementation: * [The `\tcrfenum` macro is supposed to output the numbers along with the prefixes and delimiters (e.g. “p. ” and “–”)]{#prefixes-tex}; - * In ConTeXt, there is no way to retrieve the note number from a `\reference` or a `\pagereference` contained in the note as is customary in LaTeX. to work around this, footnotes are labelled automatically with the first identifier attached to a span in the note suffixed with `_note`. + * In ConTeXt, there is no way to retrieve the note number from a `\reference` or a `\pagereference` contained in the note as is customary in LaTeX. to work around this, footnotes are labelled automatically with the first identifier attached to a span in the note prefixed with `note:`. Contrary to the ConTeXt syntax, this label is placed _after_ the footnote content, which implies redefining the `\footnote` macro. If your template includes the `header-includes` metadata variable like in the default template, this redefinition will happen automatically. Otherwise, you can copy-paste the following code in your preamble: + +``` {=tex} +\catcode`\@=11 +\let\origfootnote\footnote +\def\footnote#1#2{ + \def\tcrf@secondArg{#2}% + \ifx\tcrf@secondArg\tcrf@bracket + \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % + \else + \def\tcrf@todo{\origfootnote{#1}#2}% + \fi + \tcrf@todo +} +\def\tcrf@bracket{[} +\def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} +\catcode`\@=13 + +``` ## Usage diff --git a/text-crossrefs.lua b/text-crossrefs.lua index 981d129..268b0b5 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -5,6 +5,46 @@ local REF_TYPE_ATTR = 'reftype' local PREFIXED_ATTR = 'prefixref' local RAW_ATTRIBUTE +-- ConTeXt-specific tweak in order to add the label to the footnote +--[[ + Placing the label in square brackets immediatly after \footnote + in the regular way would require unpacking the content + of the Note and wrapping them with the RawInlines + '\footnote[note:' .. label .. ']{' and '}'. + However, Notes have the strange property of being Inlines + that contain Blocks, so this would result in Blocks being + brought into the content of the object that contains the Note, + which would be invalid. + That's why we place the label at the end of the \footnote + and redefine the macro so that it takes it into account. +]]-- + +local function tweak_footnote_if_ConTeXt(metadata) + if RAW_ATTRIBUTE == 'context' then + local footnote_redefinition = [[ +\catcode`\@=11 +\let\origfootnote\footnote +\def\footnote#1#2{ + \def\tcrf@secondArg{#2}% + \def\tcrf@bracket{[}% + \ifx\tcrf@secondArg\tcrf@bracket + \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % + \else + \def\tcrf@todo{\origfootnote{#1}#2}% + \fi + \tcrf@todo +} +\def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} +\catcode`\@=13 + ]] + if not metadata['header-includes'] then + metadata['header-includes'] = pandoc.MetaBlocks(pandoc.RawBlock('context', '')) + end + metadata['header-includes']:insert(pandoc.RawBlock('context', footnote_redefinition)) + end + return metadata +end + -- Configuration local function define_raw_attribute() @@ -178,30 +218,31 @@ local collect_note_labels = { } local function make_notelabel(pos) + -- About the strategy followed with ConTeXt, + -- see above tweak_footnote_if_ConTeXt. local raw_code = '' if pos == 'begin' then - raw_code = string.gsub( - '', - '{{label}}', current_note_labels[1]) + if RAW_ATTRIBUTE == 'openxml' then + raw_code = string.gsub( + '', + '{{label}}', current_note_labels[1]) + end elseif pos == 'end' then - raw_code = string.gsub('', - '{{label}}', current_note_labels[1]) + if RAW_ATTRIBUTE == 'openxml' then + raw_code = string.gsub('', + '{{label}}', current_note_labels[1]) + elseif RAW_ATTRIBUTE == 'context' then + raw_code = '[note:' .. current_note_labels[1] .. ']' + end end return pandoc.RawInline(RAW_ATTRIBUTE, raw_code) end local function labelize_note(note) local labelized_note - if RAW_ATTRIBUTE == 'openxml' then - local label_begin = make_notelabel('begin') - local label_end = make_notelabel('end') - labelized_note = { label_begin, note, label_end } - elseif RAW_ATTRIBUTE == 'context' then - labelized_note = pandoc.utils.blocks_to_inlines(note.content) - labelized_note:insert(1, pandoc.RawInline('context', '\\footnote[note:' .. current_note_labels[1] .. ']{')) - labelized_note:insert(pandoc.RawInline('context', '}')) - end - return labelized_note + local label_begin = make_notelabel('begin') + local label_end = make_notelabel('end') + return { label_begin, note, label_end } end local function map_text_to_note_labels(current_note_labels) @@ -545,6 +586,7 @@ end return { { Meta = configure }, + { Meta = tweak_footnote_if_ConTeXt }, { Note = set_notelabels }, { Note = map_spans_to_notelabels }, { Span = labelize_span }, From 80533218166fd4022864abdb019d768f3cc77de7 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sat, 29 Oct 2022 19:47:05 +0200 Subject: [PATCH 10/21] Cleaned up the repo and updated the test suite --- Makefile | 23 ++ sample.md | 2 + test.md | 16 -- test/sample-context.native | 386 +++++++++++++++++++++++++++++++ test/sample-latex.native | 386 +++++++++++++++++++++++++++++++ test/sample-opendocument.native | 397 ++++++++++++++++++++++++++++++++ test/test-functions.lua | 36 +++ 7 files changed, 1230 insertions(+), 16 deletions(-) create mode 100644 Makefile delete mode 100644 test.md create mode 100644 test/sample-context.native create mode 100644 test/sample-latex.native create mode 100644 test/sample-opendocument.native create mode 100644 test/test-functions.lua diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d9353c6 --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +.PHONY: test-all test-internal + +SHELL=/bin/bash +return_statement_line_number := $(shell grep -nE '^return' text-crossrefs.lua | cut -d ':' -f 1) +line_before_return := $(shell echo $$(($(return_statement_line_number) - 1))) + +test-all: test-internal test-context test-latex test-opendocument + +test-internal: text-crossrefs.lua + -rm --interactive=never test/tmp.lua + sed -n 1,$(line_before_return)p text-crossrefs.lua > test/tmp.lua + cat test/test-functions.lua >> test/tmp.lua + chmod -w test/tmp.lua + pandoc -L test/tmp.lua <<< '' + @echo -e '==========================\nAll internal tests passed.\n==========================\n' + rm --interactive=never test/tmp.lua + +test-%: text-crossrefs.lua sample.md + TESTED_FORMAT=$* pandoc -t native -L text-crossrefs.lua sample.md > test/tmp-$*.native + diff test/tmp-$*.native test/sample-$*.native + @echo -e '\n===============\ntest passed.\n===============\n' + rm test/tmp-$*.native + diff --git a/sample.md b/sample.md index 781f7fb..044150b 100644 --- a/sample.md +++ b/sample.md @@ -1,6 +1,8 @@ --- tcrf-pagenote-separator: '\ (' tcrf-pagenote-at-end: ')' +header-includes: | + \input{tex-aux/tcrfenum} --- (About the notes, see [toc-notes-begin>toc-notes-end]{.tcrf}.) diff --git a/test.md b/test.md deleted file mode 100644 index 8947f69..0000000 --- a/test.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -tcrf-pagenote-separator: '\ (' -tcrf-pagenote-at-end: ')' ---- - -Émile Gaboriau published [_L'Affaire Lerouge_ in -1866]{#publication}.[^1] - -[^1]: It is a very [fine piece of literature]{#my-evaluation}. - -[It was very popular.]{#reception} - -See [publication]{.ref} for the publication date. I expressed -my thoughts about it [my-evaluation]{.ref type=pagenote}. - -Page range: [publication>reception]{.ref} diff --git a/test/sample-context.native b/test/sample-context.native new file mode 100644 index 0000000..68cb961 --- /dev/null +++ b/test/sample-context.native @@ -0,0 +1,386 @@ +[ Para + [ Str "(About" + , Space + , Str "the" + , Space + , Str "notes," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") + "\\tcrfenum{{toc-notes-begin to toc-notes-end}}" + ] + , Str ".)" + ] +, Para + [ Str "\201mile" + , Space + , Str "Gaboriau" + , Space + , Str "published" + , Space + , Str "" + , Span + ( "publication" , [] , [] ) + [ Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Space + , Str "in" + , SoftBreak + , Str "1866" + ] + , Str "." + , RawInline (Format "context") "" + , Note + [ Para + [ Str "It" + , Space + , Str "is" + , Space + , Str "a" + , Space + , Str "very" + , Space + , Str "" + , Span + ( "my-evaluation" , [] , [] ) + [ Str "fine" + , Space + , Str "piece" + , Space + , Str "of" + , Space + , Str "literature" + ] + , Str "." + ] + ] + , RawInline (Format "context") "[note:my-evaluation]" + ] +, Para + [ Str "" + , Span + ( "reception" , [] , [] ) + [ Str "It" + , Space + , Str "was" + , Space + , Str "very" + , Space + , Str "popular." + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "context") "\\tcrfenum{{publication}}" ] + , Space + , Str "for" + , Space + , Str "the" + , Space + , Str "publication" + , Space + , Str "date." + , Space + , Str "I" + , Space + , Str "expressed" + , SoftBreak + , Str "my" + , Space + , Str "thoughts" + , Space + , Str "about" + , Space + , Str "it" + , Space + , Str "in" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) + [ RawInline + (Format "context") "\\tcrfenum[pagenote]{{my-evaluation}}" + ] + , Str "." + ] +, Para + [ Str "If" + , Space + , Str "you" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "know" + , Space + , Str "more" + , Space + , Str "about" + , Space + , Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Str "," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") "\\tcrfenum{{publication to reception}}" + ] + , Str "." + ] +, Para + [ Str "Here" + , Space + , Str "are" + , Space + , Str "some" + , Space + , Str "precisions." + , RawInline (Format "context") "" + , Note + [ Para + [ Str "" + , Span + ( "format" , [] , [] ) + [ Str "Whatever" , Space , Str "format" ] + , Space + , Str "you" + , Space + , Str "choose," + , Space + , Str "you" + , Space + , Str "can" + , Space + , Str "" + , Span + ( "refer-to-note" , [] , [] ) + [ Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Space + , Str "by" + , Space + , Str "the" + , Space + , Str "identifier" + , Space + , Str "of" + , Space + , Str "" + , Span + ( "which-identifier" , [] , [] ) + [ Str "any" + , Space + , Str "of" + , Space + , Str "its" + , Space + , Str "spans." + , Space + , Str "You" + , Space + , Str "can" + , Space + , Str "even" + , Space + , Str "" + , Span + ( "nested-spans" , [] , [] ) + [ Str "nest" , Space , Str "spans" ] + , Str "!" + ] + ] + ] + , RawInline (Format "context") "[note:format]" + ] +, Para + [ Str "" + , Span + ( "toc-notes-begin" , [] , [] ) + [ Str "I" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Str ":" + ] +, BulletList + [ [ Plain + [ Str "How" + , Space + , Str "can" + , Space + , Str "I" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + , Space + , Str "by" + , Space + , Str "its" + , Space + , Str "number?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") "\\tcrfenum{{refer-to-note}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "formats" + , Space + , Str "are" + , Space + , Str "supported?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "context") "\\tcrfenum{{format}}" ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "if" + , Space + , Str "the" + , Space + , Str "note" + , Space + , Str "contains" + , Space + , Str "multiple" + , Space + , Str "spans" + , Space + , Str "with" + , Space + , Str "identifiers?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") "\\tcrfenum{{which-identifier}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "happens" + , Space + , Str "if" + , Space + , Str "a" + , Space + , Str "span" + , Space + , Str "in" + , Space + , Str "contained" + , Space + , Str "in" + , Space + , Str "a" + , Space + , Str "span?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") "\\tcrfenum{{nested-spans}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "note" ) ] ) + [ RawInline + (Format "context") + "\\tcrfenum[note]{{my-evaluation}{format}{refer-to-note}}" + ] + ] + ] + , [ Plain + [ Str "Where" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") + "\\tcrfenum{{my-evaluation}{format}}" + ] + ] + ] + ] +, Para [ Str "" , Span ( "toc-notes-end" , [] , [] ) [] ] +] diff --git a/test/sample-latex.native b/test/sample-latex.native new file mode 100644 index 0000000..c061200 --- /dev/null +++ b/test/sample-latex.native @@ -0,0 +1,386 @@ +[ Para + [ Str "(About" + , Space + , Str "the" + , Space + , Str "notes," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "latex") + "\\tcrfenum{{toc-notes-begin to toc-notes-end}}" + ] + , Str ".)" + ] +, Para + [ Str "\201mile" + , Space + , Str "Gaboriau" + , Space + , Str "published" + , Space + , RawInline (Format "latex") "\\label{publication}" + , Span + ( "publication" , [] , [] ) + [ Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Space + , Str "in" + , SoftBreak + , Str "1866" + ] + , Str "." + , RawInline (Format "latex") "" + , Note + [ Para + [ Str "It" + , Space + , Str "is" + , Space + , Str "a" + , Space + , Str "very" + , Space + , RawInline (Format "latex") "\\label{my-evaluation}" + , Span + ( "my-evaluation" , [] , [] ) + [ Str "fine" + , Space + , Str "piece" + , Space + , Str "of" + , Space + , Str "literature" + ] + , Str "." + ] + ] + , RawInline (Format "latex") "" + ] +, Para + [ RawInline (Format "latex") "\\label{reception}" + , Span + ( "reception" , [] , [] ) + [ Str "It" + , Space + , Str "was" + , Space + , Str "very" + , Space + , Str "popular." + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "latex") "\\tcrfenum{{publication}}" ] + , Space + , Str "for" + , Space + , Str "the" + , Space + , Str "publication" + , Space + , Str "date." + , Space + , Str "I" + , Space + , Str "expressed" + , SoftBreak + , Str "my" + , Space + , Str "thoughts" + , Space + , Str "about" + , Space + , Str "it" + , Space + , Str "in" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) + [ RawInline + (Format "latex") "\\tcrfenum[pagenote]{{my-evaluation}}" + ] + , Str "." + ] +, Para + [ Str "If" + , Space + , Str "you" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "know" + , Space + , Str "more" + , Space + , Str "about" + , Space + , Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Str "," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "latex") "\\tcrfenum{{publication to reception}}" + ] + , Str "." + ] +, Para + [ Str "Here" + , Space + , Str "are" + , Space + , Str "some" + , Space + , Str "precisions." + , RawInline (Format "latex") "" + , Note + [ Para + [ RawInline (Format "latex") "\\label{format}" + , Span + ( "format" , [] , [] ) + [ Str "Whatever" , Space , Str "format" ] + , Space + , Str "you" + , Space + , Str "choose," + , Space + , Str "you" + , Space + , Str "can" + , Space + , RawInline (Format "latex") "\\label{refer-to-note}" + , Span + ( "refer-to-note" , [] , [] ) + [ Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Space + , Str "by" + , Space + , Str "the" + , Space + , Str "identifier" + , Space + , Str "of" + , Space + , RawInline (Format "latex") "\\label{which-identifier}" + , Span + ( "which-identifier" , [] , [] ) + [ Str "any" + , Space + , Str "of" + , Space + , Str "its" + , Space + , Str "spans." + , Space + , Str "You" + , Space + , Str "can" + , Space + , Str "even" + , Space + , RawInline (Format "latex") "\\label{nested-spans}" + , Span + ( "nested-spans" , [] , [] ) + [ Str "nest" , Space , Str "spans" ] + , Str "!" + ] + ] + ] + , RawInline (Format "latex") "" + ] +, Para + [ RawInline (Format "latex") "\\label{toc-notes-begin}" + , Span + ( "toc-notes-begin" , [] , [] ) + [ Str "I" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Str ":" + ] +, BulletList + [ [ Plain + [ Str "How" + , Space + , Str "can" + , Space + , Str "I" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + , Space + , Str "by" + , Space + , Str "its" + , Space + , Str "number?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "latex") "\\tcrfenum{{refer-to-note}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "formats" + , Space + , Str "are" + , Space + , Str "supported?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "latex") "\\tcrfenum{{format}}" ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "if" + , Space + , Str "the" + , Space + , Str "note" + , Space + , Str "contains" + , Space + , Str "multiple" + , Space + , Str "spans" + , Space + , Str "with" + , Space + , Str "identifiers?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "latex") "\\tcrfenum{{which-identifier}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "happens" + , Space + , Str "if" + , Space + , Str "a" + , Space + , Str "span" + , Space + , Str "in" + , Space + , Str "contained" + , Space + , Str "in" + , Space + , Str "a" + , Space + , Str "span?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline (Format "latex") "\\tcrfenum{{nested-spans}}" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "note" ) ] ) + [ RawInline + (Format "latex") + "\\tcrfenum[note]{{my-evaluation}{format}{refer-to-note}}" + ] + ] + ] + , [ Plain + [ Str "Where" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "latex") "\\tcrfenum{{my-evaluation}{format}}" + ] + ] + ] + ] +, Para + [ RawInline (Format "latex") "\\label{toc-notes-end}" + , Span ( "toc-notes-end" , [] , [] ) [] + ] +] diff --git a/test/sample-opendocument.native b/test/sample-opendocument.native new file mode 100644 index 0000000..d07ef34 --- /dev/null +++ b/test/sample-opendocument.native @@ -0,0 +1,397 @@ +[ Para + [ Str "(About" + , Space + , Str "the" + , Space + , Str "notes," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "pp.\160000\8211000" + ] + , Str ".)" + ] +, Para + [ Str "\201mile" + , Space + , Str "Gaboriau" + , Space + , Str "published" + , Space + , Str "" + , Span + ( "publication" , [] , [] ) + [ Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Space + , Str "in" + , SoftBreak + , Str "1866" + ] + , Str "." + , RawInline (Format "opendocument") "" + , Note + [ Para + [ Str "It" + , Space + , Str "is" + , Space + , Str "a" + , Space + , Str "very" + , Space + , Str "" + , Span + ( "my-evaluation" , [] , [] ) + [ Str "fine" + , Space + , Str "piece" + , Space + , Str "of" + , Space + , Str "literature" + ] + , Str "." + ] + ] + , RawInline (Format "opendocument") "" + ] +, Para + [ Str "" + , Span + ( "reception" , [] , [] ) + [ Str "It" + , Space + , Str "was" + , Space + , Str "very" + , Space + , Str "popular." + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "p.\160000" + ] + , Space + , Str "for" + , Space + , Str "the" + , Space + , Str "publication" + , Space + , Str "date." + , Space + , Str "I" + , Space + , Str "expressed" + , SoftBreak + , Str "my" + , Space + , Str "thoughts" + , Space + , Str "about" + , Space + , Str "it" + , Space + , Str "in" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) + [ RawInline + (Format "opendocument") + "p.\160000\160(n.\160000)" + ] + , Str "." + ] +, Para + [ Str "If" + , Space + , Str "you" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "know" + , Space + , Str "more" + , Space + , Str "about" + , Space + , Emph [ Str "L\8217Affaire" , Space , Str "Lerouge" ] + , Str "," + , Space + , Str "see" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "pp.\160000\8211000" + ] + , Str "." + ] +, Para + [ Str "Here" + , Space + , Str "are" + , Space + , Str "some" + , Space + , Str "precisions." + , RawInline (Format "opendocument") "" + , Note + [ Para + [ Str "" + , Span + ( "format" , [] , [] ) + [ Str "Whatever" , Space , Str "format" ] + , Space + , Str "you" + , Space + , Str "choose," + , Space + , Str "you" + , Space + , Str "can" + , Space + , Str "" + , Span + ( "refer-to-note" , [] , [] ) + [ Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Space + , Str "by" + , Space + , Str "the" + , Space + , Str "identifier" + , Space + , Str "of" + , Space + , Str "" + , Span + ( "which-identifier" , [] , [] ) + [ Str "any" + , Space + , Str "of" + , Space + , Str "its" + , Space + , Str "spans." + , Space + , Str "You" + , Space + , Str "can" + , Space + , Str "even" + , Space + , Str "" + , Span + ( "nested-spans" , [] , [] ) + [ Str "nest" , Space , Str "spans" ] + , Str "!" + ] + ] + ] + , RawInline (Format "opendocument") "" + ] +, Para + [ Str "" + , Span + ( "toc-notes-begin" , [] , [] ) + [ Str "I" + , Space + , Str "want" + , Space + , Str "to" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + ] + , Str ":" + ] +, BulletList + [ [ Plain + [ Str "How" + , Space + , Str "can" + , Space + , Str "I" + , Space + , Str "refer" + , Space + , Str "to" + , Space + , Str "a" + , Space + , Str "note" + , Space + , Str "by" + , Space + , Str "its" + , Space + , Str "number?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "p.\160000" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "formats" + , Space + , Str "are" + , Space + , Str "supported?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "p.\160000" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "if" + , Space + , Str "the" + , Space + , Str "note" + , Space + , Str "contains" + , Space + , Str "multiple" + , Space + , Str "spans" + , Space + , Str "with" + , Space + , Str "identifiers?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "p.\160000" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "happens" + , Space + , Str "if" + , Space + , Str "a" + , Space + , Str "span" + , Space + , Str "in" + , Space + , Str "contained" + , Space + , Str "in" + , Space + , Str "a" + , Space + , Str "span?" + , Space + , Str "\8594" + , Space + , Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "p.\160000" + ] + , Str "." + ] + ] + , [ Plain + [ Str "What" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [ ( "reftype" , "note" ) ] ) + [ RawInline + (Format "opendocument") + "nn.\160000, 000 and 000" + ] + ] + ] + , [ Plain + [ Str "Where" + , Space + , Str "are" + , Space + , Str "the" + , Space + , Str "notes?" + , Space + , Str "\8594" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "pp.\160000 and 000" + ] + ] + ] + ] +, Para [ Str "" , Span ( "toc-notes-end" , [] , [] ) [] ] +] diff --git a/test/test-functions.lua b/test/test-functions.lua new file mode 100644 index 0000000..d9d5c9e --- /dev/null +++ b/test/test-functions.lua @@ -0,0 +1,36 @@ +local refs + +refs = parse_references_enum('mylabel') +assert(#refs == 1) +assert(refs[1].anchor == 'mylabel') +assert(not refs[1].end_of_range) +assert(make_raw_content_tex(refs, 'page', true) + == '\\tcrfenum{{mylabel}}') +assert(make_raw_content_tex(refs, 'page', false) + == '\\tcrfenum[noprefix]{{mylabel}}') +assert(make_raw_content_tex(refs, 'note', true) + == '\\tcrfenum[note]{{mylabel}}') +assert(make_raw_content_tex(refs, 'note', false) + == '\\tcrfenum[note][noprefix]{{mylabel}}') + +refs = parse_references_enum('rangebeg>rangeend') +assert(#refs == 1) +assert(refs[1].anchor == 'rangebeg') +assert(refs[1].end_of_range == 'rangeend') +assert(make_raw_content_tex(refs, 'page', true) + == '\\tcrfenum{{rangebeg to rangeend}}') + +refs = parse_references_enum('first, second') +assert(#refs == 2) +assert(refs[1].anchor == 'first') +assert(refs[2].anchor == 'second') +assert(make_raw_content_tex(refs, 'page', true) + == '\\tcrfenum{{first}{second}}') + +refs = parse_references_enum('first, rangebeg>rangeend') +assert(#refs == 2) +assert(refs[1].anchor == 'first') +assert(refs[2].anchor == 'rangebeg') +assert(refs[2].end_of_range == 'rangeend') +assert(make_raw_content_tex(refs, 'page', true) + == '\\tcrfenum{{first}{rangebeg to rangeend}}') From ef8accbc81cca2e0c256ba044c2358a91bc5b3c7 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sat, 5 Nov 2022 18:40:44 +0100 Subject: [PATCH 11/21] Removed obsolete TODO --- text-crossrefs.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index 268b0b5..8f8b73b 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -414,8 +414,6 @@ local function make_raw_content_tex(refs, ref_type, is_prefixed) return texified_references end ---- TODO : début de section à revoir - local function make_prefix_xml(ref_type, is_plural) local prefix = '' if is_plural then @@ -539,8 +537,6 @@ local function make_references_xml(refs, ref_type, is_prefixed) return references_xml end ---- Fin de section à revoir - local function make_raw_content_xml(refs, ref_type, is_prefixed) local is_enumeration = #refs > 1 local global_prefix = '' From bc209420fe6e2b80654de7dfb931bdc1e1165e74 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sat, 5 Nov 2022 19:35:43 +0100 Subject: [PATCH 12/21] =?UTF-8?q?Impl=C3=A9mentation=20du=20support=20pour?= =?UTF-8?q?=20des=20types=20arbitraires=20pour=20LaTeX=20et=20ConTeXt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- text-crossrefs.lua | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index 8f8b73b..d17a15d 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -3,6 +3,7 @@ local stringify = pandoc.utils.stringify local TEXT_CROSSREF_CLASS = 'tcrf' local REF_TYPE_ATTR = 'reftype' local PREFIXED_ATTR = 'prefixref' +local IS_CONFIG_ARRAY = { ['additional_types'] = true } local RAW_ATTRIBUTE -- ConTeXt-specific tweak in order to add the label to the footnote @@ -94,7 +95,8 @@ local config = { default_reftype = 'page', default_prefixref = 'yes', filelabel_ref_separator = '::', - range_delim_tcrfenum = ' to ' + range_delim_tcrfenum = ' to ', + additional_types = {} } local accepted_types = { @@ -122,8 +124,16 @@ end local function set_configuration_item_from_metadata(item, metamap) metakey = 'tcrf-' .. string.gsub(item, '_', '-') if metamap[metakey] then - -- The metadata values are Str in MetaInlines. - config[item] = metamap[metakey][1].text + if IS_CONFIG_ARRAY[item] then + -- The metadata values is a list of MetaInlines, + -- each of them contains a single Str. + for _, value_metalist in ipairs(metamap[metakey]) do + table.insert(config[item], value_metalist[1].text) + end + else + -- The metadata value is a single Str in a MetaInlines. + config[item] = metamap[metakey][1].text + end end end @@ -136,6 +146,11 @@ local function configure(metadata) if RAW_ATTRIBUTE == 'openxml' then format_config_to_openxml() end + if RAW_ATTRIBUTE == 'context' or RAW_ATTRIBUTE == 'latex' then + for _, additional_type in ipairs(config.additional_types) do + accepted_types[additional_type] = true + end + end end -- End of configuration @@ -342,7 +357,7 @@ end local function get_ref_type(span) local ref_type = span.attributes[REF_TYPE_ATTR] or config.default_reftype if not accepted_types[ref_type] then - error_on_attr(REF_TYPE_ATTR, ref_type_attr_value, span.content) + error_on_attr(REF_TYPE_ATTR, ref_type, span.content) end return ref_type end From ac7abe5ef0fc89a202a1e412089796a7f154faa6 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sat, 5 Nov 2022 21:05:49 +0100 Subject: [PATCH 13/21] Clean up and reformat the README, removing references to text-extrefs --- README.md | 203 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 123 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index c406a8b..63a83a9 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ -# text-crossrefs: getting references to page and note numbers in Pandoc +# text-crossrefs: cross-references to arbitrary portions of text in Pandoc -This filters aims at extending Pandoc's cross-referencing -capacities by enabling automatic references to any piece of text -by either its page or, whenever it applies, its note number. It -currently supports the following target formats: +This filter extends Pandoc's cross-referencing abilities +with references to any portion of text +by its page number, its note number (when applicable) +or an arbitrary reference type (with ConTeXt or LaTeX output). +It currently supports the following output formats: * context * docx @@ -11,54 +12,80 @@ currently supports the following target formats: * odt * opendocument -It does not permit to refer to references in other files: if you want to do this, use text-extrefs. - ## Format-specific preliminary notices ### DOCX and ODT/Opendocument -When opening for the first time a file produced by Pandoc with text-crossrefs, you probably will have to refresh the fields in order to get the correct values. In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. +When opening for the first time a file produced by Pandoc with _text-crossrefs_, +you should have to refresh the fields in order to get the correct values. +In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. ### TeX-based formats -All references are wrapped in a macro named `\tcrfenum`. It has two optional arguments: the first one is the reference type, the second specifies whether the prefix (e.g. “p. ”) should be printed or not (can be set to `withprefix`, `noprefix`, `yes` or `no`). The default values for these arguments should match those of `tcrf-default-reftype` and `tcrf-default-prefixref` (resp. `page` and `yes`, i.e. `withprefix`). The mandatory argument of `\tcrfenum` is a group containing a list of groups. Each of them contain a reference (either a single reference or a range). Here are some valid invocations: +All references are wrapped in a macro named `\tcrfenum`. +It has two optional arguments: +the first one is the reference type, +the second indicates whether the prefix (e.g. “p. ”) should be printed or not +(can be set to `withprefix`, `noprefix`, `yes` or `no`). +The default values for these arguments should match +those of `tcrf-default-reftype` and `tcrf-default-prefixref` +(resp. `page` and `yes`, i.e. `withprefix`). +The mandatory argument of `\tcrfenum` is a group enclosing one or more groups. +Each of them contain a reference (either a single reference or a range). - * \tcrfenum\[note\]\[withprefix\]{{lblone}{lbltwo}{lblthree}} - * \tcrfenum\[page\]\[noprefix\]{{lblone}{lbltwo}{lblthree}} - * \tcrfenum\[noprefix\]{{lblone}{lbltwo}{lblthree}} (the first argument defaults to `page`) - * \tcrfenum{{lblone}{lbltwo}{lblthree}} (the second argument defaults to `withprefix`) - * \tcrfenum{{only-one}} (even if the enumeration is limited to one item, it must be inside its own group) - * \tcrfenum{{lblone to lbltwo}{lblthree}} (the first reference points to a range) +Here are some valid invocations: -It is up to you to define `\tcrfenum` in your preamble. If your target format is LaTeX, it should be possible to define it as a wrapper for the `\zcref` macro provided by [the zref-clever package](https://ctan.org/pkg/zref-clever). Alternatively, you can use [my implementation](TODO), which supports ConTeXt, LaTeX and other formats. Here are some hints about the implementation: + * `\tcrfenum[note][withprefix]{{lblone}{lbltwo}{lblthree}}` + * `\tcrfenum[page][noprefix]{{lblone}{lbltwo}{lblthree}}` + * `\tcrfenum[noprefix]{{lblone}{lbltwo}{lblthree}}` (the first argument defaults to `page`) + * `\tcrfenum{{lblone}{lbltwo}{lblthree}}` (the second argument defaults to `withprefix`) + * `\tcrfenum{{only-one}}` (even if the enumeration is limited to one item, it must be in a group) + * `\tcrfenum{{lblone to lbltwo}{lblthree}}` (the first reference points to a range) - * [The `\tcrfenum` macro is supposed to output the numbers along with the prefixes and delimiters (e.g. “p. ” and “–”)]{#prefixes-tex}; - * In ConTeXt, there is no way to retrieve the note number from a `\reference` or a `\pagereference` contained in the note as is customary in LaTeX. to work around this, footnotes are labelled automatically with the first identifier attached to a span in the note prefixed with `note:`. Contrary to the ConTeXt syntax, this label is placed _after_ the footnote content, which implies redefining the `\footnote` macro. If your template includes the `header-includes` metadata variable like in the default template, this redefinition will happen automatically. Otherwise, you can copy-paste the following code in your preamble: +It is up to you to define `\tcrfenum` in your preamble. +If your target format is LaTeX, it should be possible to define it as a wrapper +for the `\zcref` macro provided by [the zref-clever package](https://ctan.org/pkg/zref-clever). +Alternatively, you can use [my implementation](TODO), +which currently supports ConTeXt and LaTeX. +Here are some hints about the implementation of the `\tcrfenum` macro: -``` {=tex} -\catcode`\@=11 -\let\origfootnote\footnote -\def\footnote#1#2{ - \def\tcrf@secondArg{#2}% - \ifx\tcrf@secondArg\tcrf@bracket - \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % - \else - \def\tcrf@todo{\origfootnote{#1}#2}% - \fi - \tcrf@todo -} -\def\tcrf@bracket{[} -\def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} -\catcode`\@=13 + * [The `\tcrfenum` macro is supposed to output non only the numbers, + but also the prefixes and delimiters (e.g. “p. ” and “–”)]{#prefixes-tex}; + * In ConTeXt, there is no way to retrieve the note number + from a `\reference` or a `\pagereference` contained in the note + as one would from a `\label` in LaTeX. + To work around this, footnotes are labelled automatically with `note:` + followed by the first identifier attached to a span in the note. + Contrary to the ConTeXt syntax, this label is placed _after_ the footnote content, + so the `\footnote` macro has to be redefined. + If your template includes the `header-includes` metadata variable like the default one does, + this redefinition will happen automatically. + Otherwise, you can copy-paste the following code in your preamble: -``` + ``` {=tex} + \catcode`\@=11 + \let\origfootnote\footnote + \def\footnote#1#2{ + \def\tcrf@secondArg{#2}% + \ifx\tcrf@secondArg\tcrf@bracket + \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % + \else + \def\tcrf@todo{\origfootnote{#1}#2}% + \fi + \tcrf@todo + } + \def\tcrf@bracket{[} + \def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} + \catcode`\@=13 + + ``` ## Usage ### Basics -Mark the span of text you want to refer to later with an -identifier composed of alphanumeric characters, periods, colons, underscores and hyphens: +Mark the span of text you want to refer to later +with an identifier composed of alphanumeric characters, periods, colons, underscores or hyphens: ``` markdown Émile Gaboriau published [_L'Affaire Lerouge_ in @@ -69,10 +96,11 @@ identifier composed of alphanumeric characters, periods, colons, underscores and [It was very popular.]{#reception} ``` -You can refer to it using another span with class `ref` containing -the target's identifier. If the targetted span is part of a -footnote, you can refer to it either by page or by note number according to -the value of the `reftype` attribute (defaults to `page`). For instance, this: +To refer to it, write another span with class `tcrf` containing the target's identifier. +If the span you are referring to is part of a footnote, +you can refer to it either by page or note number +according to the value of the `reftype` attribute (defaults to `page`). +For instance, this: ``` markdown See [publication]{.tcrf} for the publication date. I gave my @@ -87,21 +115,23 @@ my thoughts about it in \tcrfenum[note]{{my-evaluation}}, \tcrfenum{{my-evaluation}}. ``` -If you want to give a reference by note and page number like in the example above, you can also use the following shorthand: +If you want to give a reference by note _and_ page number like in the example above, +you can also use the following shorthand: ```md [my-evaluation]{.tcrf reftype=pagenote} ``` -You can refer to headers as well using either explicit or automatically generated identifiers (see Pandoc user’s guide). +In fact, you can use any identifier, including those automatically set by Pandoc. -To suppress the prefixes (e.g. “p. ”), you can set the `prefixref` attribute to `no` (defaults to `yes`). It can be useful, for instance, for small manually formatted indexes[^1]: +To suppress the prefixes (e.g. “p. ”), you can set the `prefixref` attribute to `no` (defaults to `yes`). +It can be useful, for instance, for small manually formatted indexes[^comma-syntax]: ``` markdown Gaboriau: [publication, my-evaluation, reception]{.tcrf prefixref=no} ``` -[^1]: About the comma-delimited syntax used in this example, see [the section on enumerations below](#enums). +[^comma-syntax]: About the comma-delimited syntax used in this example, see [the section on enumerations below](#enums). ### Page ranges @@ -111,15 +141,22 @@ You can refer to a page range like this: If you want to know more about _L'Affaire Lerouge_, see [publication>reception]{.tcrf}. ``` -The separator (here `>`) can be set to any string composed of characters other than alphanumeric, period, colon, underscore, hyphen and space. +The separator (here `>`) can be set to any string of characters +other than alphanumeric, period, colon, underscore, hyphen and space +(see the [customization options](#common-opts)). -In LaTeX and ConTeXt output, the above-mentionned `\tcrfenum` macro should be defined so that the range is printed as a simple page reference if the page numbers are identical. The syntax of a range is: +In LaTeX and ConTeXt output, the above-mentionned `\tcrfenum` macro +should be defined so that the range is printed as a simple page reference if the page numbers are identical. +The syntax of a range is[^customize-range-tex]: ``` tex \tcrfenum{{publication to reception}} ``` -In DOCX and ODT/Opendocument output, the same result can be achieved in a word processor by automatically searching and replacing duplicates with regular expressions and/or macros. +[^customize-range-tex]: Note that [it can be customized](#tex-options). + +In DOCX and ODT/Opendocument output, +a range will be printed as a range even if the numbers are identical. ### Enumerations {#enums} @@ -129,8 +166,10 @@ You can enumerate several references as a comma-delimited list, for instance: [ref-one, ref-two>ref-three, ref-four]{.tcrf} ``` -In DOCX and ODT/Opendocument output, all these references will be printed, potentially resulting in unnecessary repetitions. -In TeX-based output formats, they will be wrapped in `\tcrfenum` like this: +In DOCX and ODT/Opendocument output, all these references will be printed, +potentially resulting in unnecessary repetitions. +In TeX-based output formats, they will be wrapped in `\tcrfenum` like this +and should be collapsed by the macro when it is desirable: ``` tex \tcrfenum{{ref-one}{ref-two to ref-three}{ref-four}} @@ -138,18 +177,18 @@ In TeX-based output formats, they will be wrapped in `\tcrfenum` like this: ## Customization -### Common options +### Common options {#common-opts} The following metadata fields can be set as strings: * `tcrf-references-enum-separator`: - * the string between two references in an enumeration in a reference span; can be composed of any characters not authorized in an identifier; - * defaults to `, ` (with a space after the comma). + * the string between two references in an enumeration in a reference span; + * defaults to a comma followed by a space. * `tcrf-references-range-separator`: - * the string used to separate two references in a reference span; can be composed of any characters not authorized in an identifier; + * the string used to separate two references in a reference span; * defaults to `>`. * `tcrf-only-explicit-labels`: - * set it to `true` if you want that _tcrf_ handle only spans with class `label`; + * set it to `true` if you want _tcrfenum_ to refer to spans with class `label` only; * defaults to `false`. * `tcrf-default-prefixref`: * default value for the `prefixref` attribute; @@ -157,14 +196,11 @@ The following metadata fields can be set as strings: * `tcrf-default-reftype`: * default value for the `reftype` attribute; * defaults to `page`. - * `tcrf-filelabel-ref-separator`: - * only useful in conjunction with the text-exrefs filter; - * separator between external files' labels and references; - * defaults to `::`. ### Options specific to DOCX and ODT/Opendocument -Here are some metadata fields only useful in conjunction with `docx`, `odt` and `opendocument` formats (see [above](#prefixes-tex) why they are ignored with `context` and `latex`): +Here are some metadata fields for the `docx`, `odt` and `opendocument` formats only +(see [above](#prefixes-tex) why they are ignored in ConTeXt and LaTeX output): * `tcrf-page-prefix`: * “page” prefix; @@ -179,33 +215,39 @@ Here are some metadata fields only useful in conjunction with `docx`, `odt` and * “notes” prefix; * defaults to `nn. `. * `tcrf-pagenote-separator`: - * the separator between the references when `reftype` is set to `pagenote`; - * defaults to `, `. + * the separator between the enumerated references in the output file + when `reftype` is set to `pagenote`; + * defaults to a comma followed by a space. * `tcrf-pagenote-at-end`: - * the string printed at the end of a pagenote reference; - * defaults to the empty string, can be used to achieve something like *n. 3 (p. 5)*. + * the string printed at the end of a `pagenote` reference in the output file; + * defaults to the empty string, but it can be used to achieve something like *n. 3 (p. 5)* + (see the sample file). * `tcrf-pagenote-factorize-first-prefix-in-enum`: - * defines if the prefixes of the type printed first in a reference to page and note should be repeated (e.g. “p. 6, n. 1 and p. 9, n. 3”) or expressed globally at the beginning of the enumeration (e.g. “pp. 6, n. 1 and 9, n. 3”); + * defines if the prefixes of the type printed first in a reference to page and note + should be repeated (like in “p. 6, n. 1 and p. 9, n. 3”) + or set globally at the beginning of the enumeration (like in “pp. 6, n. 1 and 9, n. 3”); * defaults to `no`, can be set to `yes`. * `tcrf-pagenote-first-type`: - * the information that is printed first in references to page and note; + * the type of the reference number that is printed first in references to page and note; * defaults to `page`, can be set to `note`. * `tcrf-range-separator`: - * the string inserted between the page numbers in a range; + * the string separating the page numbers in a range; * defaults to `–`. * `tcrf-references-enum-separator`: - * the string used to separate the elements of an enumeration in a reference span; + * the string separating the elements of an enumeration in a reference span; * defaults to a comma followed by a space. * `tcrf-multiple-delimiter`: - * the string inserted between two elements (but the two last ones) in an enumeration; + * the string between two elements (but the two last ones) in an enumeration; * defaults to a comma followed by a space. * `tcrf-multiple-before-last`: * the string inserted between the two last elements in an enumeration; * defaults to `and` surrounded with spaces. -### Options specific to the formats based on TeX +### Options specific to the formats based on TeX {#tex-options} -Since TeX is extensible, you may wish to support types other than `page`, `note` and `pagenote` for ConTeXt and LaTeX output. `tcrf-additional-types` can be provided with a list of supplementary accepted types, e.g.: +Since TeX is extensible, you may wish to support types +other than `page`, `note` and `pagenote` for ConTeXt and LaTeX output. +`tcrf-additional-types` can be provided with a list of supplementary accepted types, e.g.: ``` yaml tcrf-additional-types: @@ -213,19 +255,24 @@ tcrf-additional-types: - figure ``` +Once declared, these types can be used as the value of `reftype` +in the same way as `page`, `note` and `pagenote`. + In addition, the following metadata field can be used to control the rendering of ranges of labels in `\tcrfenum`: * `tcrf-range-delim-tcrfenum`: - * the delimiter between the labels of a range in the list of references passed to `\tcrfenum`; - * defaults to ` to ` (mind the spaces). + * the delimiter between the labels of a range in the TeX output file; + * defaults to `to` surrounded with spaces. ## Compatibility with other filters -Text-crossrefs must be run after all other filters that can create, delete or move -footnotes, like citeproc. +_text-crossrefs_ must be run after all filters that may create, delete or move footnotes, such as citeproc. -In order to give and identifier to a note produced by a citation inside square brackets, the span should not include the citation key, the locator or the `;` -delimiter. If it is placed immediatly after the locator, this should be surrounded by curly brackets. So this should work: +In a citation inside square brackets, the span bearing an identifier should not include +a citation key, a locator or a `;` delimiter. +When it follows immediatly the locator, +you should protect the locator with curly brackets. +For example, this should work: ``` markdown [@Jones1973, p. 5-70; @Doe2004[]{#jones-doe}] @@ -244,7 +291,3 @@ not that: [@Jones1973, p. 5-70[]{#ref-to-jones}; @Doe2004] ``` - -You can set classes and attributes to your spans other than those defined by text-crossrefs (for instance `[some text]{#to-be-referred-to .highlighted color=red}` or `[reference]{.tcrf color=red}`). No span is removed. - -Text-crossrefs is fully compatible with text-extrefs. Whenever possible, when a metadata is not set for text-extrefs, its value is taken from its text-crossrefs equivalent, so that you don't need to duplicate similar variables. From aeb693793bcdb7d3aa96de067bd61dc3dafab2e4 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sun, 6 Nov 2022 21:51:12 +0100 Subject: [PATCH 14/21] Take account of change from tcrfenum to crossrefenum --- README.md | 56 +++++++++++++++++++------------------- sample.md | 2 +- test/sample-context.native | 20 +++++++------- test/sample-latex.native | 20 +++++++------- test/test-functions.lua | 14 +++++----- 5 files changed, 56 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index 63a83a9..faf89ec 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ In LibreOffice, press `F9`; in Word, a dialog box should appear when the file op ### TeX-based formats -All references are wrapped in a macro named `\tcrfenum`. +All references are wrapped in a macro named `\crossrefenum`. It has two optional arguments: the first one is the reference type, the second indicates whether the prefix (e.g. “p. ”) should be printed or not @@ -30,26 +30,26 @@ the second indicates whether the prefix (e.g. “p. ”) should be printed or The default values for these arguments should match those of `tcrf-default-reftype` and `tcrf-default-prefixref` (resp. `page` and `yes`, i.e. `withprefix`). -The mandatory argument of `\tcrfenum` is a group enclosing one or more groups. +The mandatory argument of `\crossrefenum` is a group enclosing one or more groups. Each of them contain a reference (either a single reference or a range). Here are some valid invocations: - * `\tcrfenum[note][withprefix]{{lblone}{lbltwo}{lblthree}}` - * `\tcrfenum[page][noprefix]{{lblone}{lbltwo}{lblthree}}` - * `\tcrfenum[noprefix]{{lblone}{lbltwo}{lblthree}}` (the first argument defaults to `page`) - * `\tcrfenum{{lblone}{lbltwo}{lblthree}}` (the second argument defaults to `withprefix`) - * `\tcrfenum{{only-one}}` (even if the enumeration is limited to one item, it must be in a group) - * `\tcrfenum{{lblone to lbltwo}{lblthree}}` (the first reference points to a range) + * `\crossrefenum[note][withprefix]{{lblone}{lbltwo}{lblthree}}` + * `\crossrefenum[page][noprefix]{{lblone}{lbltwo}{lblthree}}` + * `\crossrefenum[noprefix]{{lblone}{lbltwo}{lblthree}}` (the first argument defaults to `page`) + * `\crossrefenum{{lblone}{lbltwo}{lblthree}}` (the second argument defaults to `withprefix`) + * `\crossrefenum{{only-one}}` (even if the enumeration is limited to one item, it must be in a group) + * `\crossrefenum{{lblone to lbltwo}{lblthree}}` (the first reference points to a range) -It is up to you to define `\tcrfenum` in your preamble. +It is up to you to define `\crossrefenum` in your preamble. If your target format is LaTeX, it should be possible to define it as a wrapper for the `\zcref` macro provided by [the zref-clever package](https://ctan.org/pkg/zref-clever). Alternatively, you can use [my implementation](TODO), which currently supports ConTeXt and LaTeX. -Here are some hints about the implementation of the `\tcrfenum` macro: +Here are some hints about the implementation of the `\crossrefenum` macro: - * [The `\tcrfenum` macro is supposed to output non only the numbers, + * [The `\crossrefenum` macro is supposed to output non only the numbers, but also the prefixes and delimiters (e.g. “p. ” and “–”)]{#prefixes-tex}; * In ConTeXt, there is no way to retrieve the note number from a `\reference` or a `\pagereference` contained in the note @@ -66,16 +66,16 @@ Here are some hints about the implementation of the `\tcrfenum` macro: \catcode`\@=11 \let\origfootnote\footnote \def\footnote#1#2{ - \def\tcrf@secondArg{#2}% - \ifx\tcrf@secondArg\tcrf@bracket - \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % + \def\crfnm@secondArg{#2}% + \ifx\crfnm@secondArg\crfnm@bracket + \def\crfnm@todo{\crfnm@footnote@withlabel{#1}#2} % \else - \def\tcrf@todo{\origfootnote{#1}#2}% + \def\crfnm@todo{\origfootnote{#1}#2}% \fi - \tcrf@todo + \crfnm@todo } - \def\tcrf@bracket{[} - \def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} + \def\crfnm@bracket{[} + \def\crfnm@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} \catcode`\@=13 ``` @@ -110,9 +110,9 @@ opinion in [my-evaluation]{.tcrf reftype=note}, [my-evaluation]{.tcrf}. will render in ConTeXt or LaTeX output: ``` tex -See \tcrfenum{{publication}} for the publication date. I expressed -my thoughts about it in \tcrfenum[note]{{my-evaluation}}, -\tcrfenum{{my-evaluation}}. +See \crossrefenum{{publication}} for the publication date. I expressed +my thoughts about it in \crossrefenum[note]{{my-evaluation}}, +\crossrefenum{{my-evaluation}}. ``` If you want to give a reference by note _and_ page number like in the example above, @@ -145,12 +145,12 @@ The separator (here `>`) can be set to any string of characters other than alphanumeric, period, colon, underscore, hyphen and space (see the [customization options](#common-opts)). -In LaTeX and ConTeXt output, the above-mentionned `\tcrfenum` macro +In LaTeX and ConTeXt output, the above-mentionned `\crossrefenum` macro should be defined so that the range is printed as a simple page reference if the page numbers are identical. The syntax of a range is[^customize-range-tex]: ``` tex -\tcrfenum{{publication to reception}} +\crossrefenum{{publication to reception}} ``` [^customize-range-tex]: Note that [it can be customized](#tex-options). @@ -168,11 +168,11 @@ You can enumerate several references as a comma-delimited list, for instance: In DOCX and ODT/Opendocument output, all these references will be printed, potentially resulting in unnecessary repetitions. -In TeX-based output formats, they will be wrapped in `\tcrfenum` like this +In TeX-based output formats, they will be wrapped in `\crossrefenum` like this and should be collapsed by the macro when it is desirable: ``` tex -\tcrfenum{{ref-one}{ref-two to ref-three}{ref-four}} +\crossrefenum{{ref-one}{ref-two to ref-three}{ref-four}} ``` ## Customization @@ -188,7 +188,7 @@ The following metadata fields can be set as strings: * the string used to separate two references in a reference span; * defaults to `>`. * `tcrf-only-explicit-labels`: - * set it to `true` if you want _tcrfenum_ to refer to spans with class `label` only; + * set it to `true` if you want _crossrefenum_ to refer to spans with class `label` only; * defaults to `false`. * `tcrf-default-prefixref`: * default value for the `prefixref` attribute; @@ -258,9 +258,9 @@ tcrf-additional-types: Once declared, these types can be used as the value of `reftype` in the same way as `page`, `note` and `pagenote`. -In addition, the following metadata field can be used to control the rendering of ranges of labels in `\tcrfenum`: +In addition, the following metadata field can be used to control the rendering of ranges of labels in `\crossrefenum`: - * `tcrf-range-delim-tcrfenum`: + * `tcrf-range-delim-crossrefenum`: * the delimiter between the labels of a range in the TeX output file; * defaults to `to` surrounded with spaces. diff --git a/sample.md b/sample.md index 044150b..9307faf 100644 --- a/sample.md +++ b/sample.md @@ -2,7 +2,7 @@ tcrf-pagenote-separator: '\ (' tcrf-pagenote-at-end: ')' header-includes: | - \input{tex-aux/tcrfenum} + \input{tex-aux/crossrefenum} --- (About the notes, see [toc-notes-begin>toc-notes-end]{.tcrf}.) diff --git a/test/sample-context.native b/test/sample-context.native index 68cb961..08ff8cf 100644 --- a/test/sample-context.native +++ b/test/sample-context.native @@ -11,7 +11,7 @@ ( "" , [ "tcrf" ] , [] ) [ RawInline (Format "context") - "\\tcrfenum{{toc-notes-begin to toc-notes-end}}" + "\\crossrefenum{{toc-notes-begin to toc-notes-end}}" ] , Str ".)" ] @@ -77,7 +77,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "context") "\\tcrfenum{{publication}}" ] + [ RawInline (Format "context") "\\crossrefenum{{publication}}" ] , Space , Str "for" , Space @@ -104,7 +104,7 @@ , Span ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) [ RawInline - (Format "context") "\\tcrfenum[pagenote]{{my-evaluation}}" + (Format "context") "\\crossrefenum[pagenote]{{my-evaluation}}" ] , Str "." ] @@ -131,7 +131,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\tcrfenum{{publication to reception}}" + (Format "context") "\\crossrefenum{{publication to reception}}" ] , Str "." ] @@ -255,7 +255,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\tcrfenum{{refer-to-note}}" + (Format "context") "\\crossrefenum{{refer-to-note}}" ] , Str "." ] @@ -275,7 +275,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "context") "\\tcrfenum{{format}}" ] + [ RawInline (Format "context") "\\crossrefenum{{format}}" ] , Str "." ] ] @@ -305,7 +305,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\tcrfenum{{which-identifier}}" + (Format "context") "\\crossrefenum{{which-identifier}}" ] , Str "." ] @@ -338,7 +338,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\tcrfenum{{nested-spans}}" + (Format "context") "\\crossrefenum{{nested-spans}}" ] , Str "." ] @@ -358,7 +358,7 @@ ( "" , [ "tcrf" ] , [ ( "reftype" , "note" ) ] ) [ RawInline (Format "context") - "\\tcrfenum[note]{{my-evaluation}{format}{refer-to-note}}" + "\\crossrefenum[note]{{my-evaluation}{format}{refer-to-note}}" ] ] ] @@ -377,7 +377,7 @@ ( "" , [ "tcrf" ] , [] ) [ RawInline (Format "context") - "\\tcrfenum{{my-evaluation}{format}}" + "\\crossrefenum{{my-evaluation}{format}}" ] ] ] diff --git a/test/sample-latex.native b/test/sample-latex.native index c061200..6427e79 100644 --- a/test/sample-latex.native +++ b/test/sample-latex.native @@ -11,7 +11,7 @@ ( "" , [ "tcrf" ] , [] ) [ RawInline (Format "latex") - "\\tcrfenum{{toc-notes-begin to toc-notes-end}}" + "\\crossrefenum{{toc-notes-begin to toc-notes-end}}" ] , Str ".)" ] @@ -77,7 +77,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\tcrfenum{{publication}}" ] + [ RawInline (Format "latex") "\\crossrefenum{{publication}}" ] , Space , Str "for" , Space @@ -104,7 +104,7 @@ , Span ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) [ RawInline - (Format "latex") "\\tcrfenum[pagenote]{{my-evaluation}}" + (Format "latex") "\\crossrefenum[pagenote]{{my-evaluation}}" ] , Str "." ] @@ -131,7 +131,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "latex") "\\tcrfenum{{publication to reception}}" + (Format "latex") "\\crossrefenum{{publication to reception}}" ] , Str "." ] @@ -254,7 +254,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\tcrfenum{{refer-to-note}}" + [ RawInline (Format "latex") "\\crossrefenum{{refer-to-note}}" ] , Str "." ] @@ -274,7 +274,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\tcrfenum{{format}}" ] + [ RawInline (Format "latex") "\\crossrefenum{{format}}" ] , Str "." ] ] @@ -304,7 +304,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "latex") "\\tcrfenum{{which-identifier}}" + (Format "latex") "\\crossrefenum{{which-identifier}}" ] , Str "." ] @@ -336,7 +336,7 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\tcrfenum{{nested-spans}}" + [ RawInline (Format "latex") "\\crossrefenum{{nested-spans}}" ] , Str "." ] @@ -356,7 +356,7 @@ ( "" , [ "tcrf" ] , [ ( "reftype" , "note" ) ] ) [ RawInline (Format "latex") - "\\tcrfenum[note]{{my-evaluation}{format}{refer-to-note}}" + "\\crossrefenum[note]{{my-evaluation}{format}{refer-to-note}}" ] ] ] @@ -374,7 +374,7 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "latex") "\\tcrfenum{{my-evaluation}{format}}" + (Format "latex") "\\crossrefenum{{my-evaluation}{format}}" ] ] ] diff --git a/test/test-functions.lua b/test/test-functions.lua index d9d5c9e..e38bc95 100644 --- a/test/test-functions.lua +++ b/test/test-functions.lua @@ -5,27 +5,27 @@ assert(#refs == 1) assert(refs[1].anchor == 'mylabel') assert(not refs[1].end_of_range) assert(make_raw_content_tex(refs, 'page', true) - == '\\tcrfenum{{mylabel}}') + == '\\crossrefenum{{mylabel}}') assert(make_raw_content_tex(refs, 'page', false) - == '\\tcrfenum[noprefix]{{mylabel}}') + == '\\crossrefenum[noprefix]{{mylabel}}') assert(make_raw_content_tex(refs, 'note', true) - == '\\tcrfenum[note]{{mylabel}}') + == '\\crossrefenum[note]{{mylabel}}') assert(make_raw_content_tex(refs, 'note', false) - == '\\tcrfenum[note][noprefix]{{mylabel}}') + == '\\crossrefenum[note][noprefix]{{mylabel}}') refs = parse_references_enum('rangebeg>rangeend') assert(#refs == 1) assert(refs[1].anchor == 'rangebeg') assert(refs[1].end_of_range == 'rangeend') assert(make_raw_content_tex(refs, 'page', true) - == '\\tcrfenum{{rangebeg to rangeend}}') + == '\\crossrefenum{{rangebeg to rangeend}}') refs = parse_references_enum('first, second') assert(#refs == 2) assert(refs[1].anchor == 'first') assert(refs[2].anchor == 'second') assert(make_raw_content_tex(refs, 'page', true) - == '\\tcrfenum{{first}{second}}') + == '\\crossrefenum{{first}{second}}') refs = parse_references_enum('first, rangebeg>rangeend') assert(#refs == 2) @@ -33,4 +33,4 @@ assert(refs[1].anchor == 'first') assert(refs[2].anchor == 'rangebeg') assert(refs[2].end_of_range == 'rangeend') assert(make_raw_content_tex(refs, 'page', true) - == '\\tcrfenum{{first}{rangebeg to rangeend}}') + == '\\crossrefenum{{first}{rangebeg to rangeend}}') From be371aaf9c419ee2b4fc7900a89ef178d31f10f5 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Sun, 6 Nov 2022 21:56:13 +0100 Subject: [PATCH 15/21] Take account of the suppression of the tex-aux directory. Now crossrefenum.tex has to be installed on the system of the user if he wants to compile the TeX file produced from sample.md --- sample.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample.md b/sample.md index 9307faf..de2ec76 100644 --- a/sample.md +++ b/sample.md @@ -2,7 +2,7 @@ tcrf-pagenote-separator: '\ (' tcrf-pagenote-at-end: ')' header-includes: | - \input{tex-aux/crossrefenum} + \input{crossrefenum} --- (About the notes, see [toc-notes-begin>toc-notes-end]{.tcrf}.) From 9658b61375125f538733a0d53696a6b1b9c33228 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 16 Nov 2022 09:24:02 +0100 Subject: [PATCH 16/21] Updated from tcrfenum to crossrefenum in \*TeX output --- text-crossrefs.lua | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index d17a15d..46cd595 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -95,7 +95,7 @@ local config = { default_reftype = 'page', default_prefixref = 'yes', filelabel_ref_separator = '::', - range_delim_tcrfenum = ' to ', + range_delim_crossrefenum = ' to ', additional_types = {} } @@ -376,18 +376,18 @@ end -- Formatting references as raw inlines. -local function make_tcrfenum_first_arg(ref_type) +local function make_crossrefenum_first_arg(ref_type) local ref_type_is_explicit = ref_type ~= config.default_reftype - local tcrfenum_first_arg = '' + local crossrefenum_first_arg = '' if ref_type_is_explicit then - tcrfenum_first_arg = '[' .. ref_type .. ']' + crossrefenum_first_arg = '[' .. ref_type .. ']' end - return tcrfenum_first_arg + return crossrefenum_first_arg end -local function make_tcrfenum_second_arg(is_prefixed) +local function make_crossrefenum_second_arg(is_prefixed) local is_prefixed_is_explicit = is_prefixed ~= (config.default_prefixref == 'yes') - local tcrfenum_second_arg = '' + local crossrefenum_second_arg = '' local is_prefixed_string = '' if is_prefixed_is_explicit then if is_prefixed then @@ -395,13 +395,13 @@ local function make_tcrfenum_second_arg(is_prefixed) else is_prefixed_string = 'noprefix' end - tcrfenum_second_arg = '[' .. is_prefixed_string .. ']' + crossrefenum_second_arg = '[' .. is_prefixed_string .. ']' end - return tcrfenum_second_arg + return crossrefenum_second_arg end -local function make_tcrfenum_references_list(refs, ref_type) - local tcrfenum_references_list = '' +local function make_crossrefenum_references_list(refs, ref_type) + local crossrefenum_references_list = '' for i = 1, #refs do local ref = refs[i] local anchor = ref.anchor @@ -412,20 +412,20 @@ local function make_tcrfenum_references_list(refs, ref_type) end local texified_ref = '{' .. anchor if ref.end_of_range then - texified_ref = texified_ref .. config.range_delim_tcrfenum .. ref.end_of_range + texified_ref = texified_ref .. config.range_delim_crossrefenum .. ref.end_of_range end texified_ref = texified_ref .. '}' - tcrfenum_references_list = tcrfenum_references_list .. texified_ref + crossrefenum_references_list = crossrefenum_references_list .. texified_ref end - return tcrfenum_references_list + return crossrefenum_references_list end local function make_raw_content_tex(refs, ref_type, is_prefixed) local texified_references = '' - texified_references = '\\tcrfenum' - .. make_tcrfenum_first_arg(ref_type) - .. make_tcrfenum_second_arg(is_prefixed) - .. '{' .. make_tcrfenum_references_list(refs, ref_type) .. '}' + texified_references = '\\crossrefenum' + .. make_crossrefenum_first_arg(ref_type) + .. make_crossrefenum_second_arg(is_prefixed) + .. '{' .. make_crossrefenum_references_list(refs, ref_type) .. '}' return texified_references end From e0882e92e9aaba3ce7f184b0f8dfd5bba17ce686 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 16 Nov 2022 09:30:39 +0100 Subject: [PATCH 17/21] Change in formatting of native files in Pandoc --- test/sample-context.native | 16 +++++++++++----- test/sample-latex.native | 15 ++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/test/sample-context.native b/test/sample-context.native index 08ff8cf..d71fb71 100644 --- a/test/sample-context.native +++ b/test/sample-context.native @@ -77,7 +77,9 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "context") "\\crossrefenum{{publication}}" ] + [ RawInline + (Format "context") "\\crossrefenum{{publication}}" + ] , Space , Str "for" , Space @@ -104,7 +106,8 @@ , Span ( "" , [ "tcrf" ] , [ ( "reftype" , "pagenote" ) ] ) [ RawInline - (Format "context") "\\crossrefenum[pagenote]{{my-evaluation}}" + (Format "context") + "\\crossrefenum[pagenote]{{my-evaluation}}" ] , Str "." ] @@ -131,7 +134,8 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\crossrefenum{{publication to reception}}" + (Format "context") + "\\crossrefenum{{publication to reception}}" ] , Str "." ] @@ -275,7 +279,8 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "context") "\\crossrefenum{{format}}" ] + [ RawInline (Format "context") "\\crossrefenum{{format}}" + ] , Str "." ] ] @@ -305,7 +310,8 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "context") "\\crossrefenum{{which-identifier}}" + (Format "context") + "\\crossrefenum{{which-identifier}}" ] , Str "." ] diff --git a/test/sample-latex.native b/test/sample-latex.native index 6427e79..90e1761 100644 --- a/test/sample-latex.native +++ b/test/sample-latex.native @@ -77,7 +77,8 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\crossrefenum{{publication}}" ] + [ RawInline (Format "latex") "\\crossrefenum{{publication}}" + ] , Space , Str "for" , Space @@ -131,7 +132,8 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "latex") "\\crossrefenum{{publication to reception}}" + (Format "latex") + "\\crossrefenum{{publication to reception}}" ] , Str "." ] @@ -254,7 +256,8 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\crossrefenum{{refer-to-note}}" + [ RawInline + (Format "latex") "\\crossrefenum{{refer-to-note}}" ] , Str "." ] @@ -336,7 +339,8 @@ , Space , Span ( "" , [ "tcrf" ] , [] ) - [ RawInline (Format "latex") "\\crossrefenum{{nested-spans}}" + [ RawInline + (Format "latex") "\\crossrefenum{{nested-spans}}" ] , Str "." ] @@ -374,7 +378,8 @@ , Span ( "" , [ "tcrf" ] , [] ) [ RawInline - (Format "latex") "\\crossrefenum{{my-evaluation}{format}}" + (Format "latex") + "\\crossrefenum{{my-evaluation}{format}}" ] ] ] From 9fc6ea767cac2186a8ddec047dff2c99d0d3d857 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 16 Nov 2022 10:14:58 +0100 Subject: [PATCH 18/21] Implemented control of label placement --- README.md | 19 ++++++++++ sample.md | 6 ++++ test/sample-context.native | 63 +++++++++++++++++++++++++++++++++ test/sample-latex.native | 63 +++++++++++++++++++++++++++++++++ test/sample-opendocument.native | 63 +++++++++++++++++++++++++++++++++ text-crossrefs.lua | 21 +++++++++++ 6 files changed, 235 insertions(+) diff --git a/README.md b/README.md index faf89ec..575c5d6 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,25 @@ Gaboriau: [publication, my-evaluation, reception]{.tcrf prefixref=no} [^comma-syntax]: About the comma-delimited syntax used in this example, see [the section on enumerations below](#enums). +### Controlling where the label is placed + +By default, labels are placed at the beginning of the spans. +You can change this via the attribute `refanchor`, which can be set to: + + * `beg` (default); + * `end`; + * `both`. + +When the value is `both`, _text-crossrefs_ creates two labels +by suffixing `-beg` and `-end` to the identifier. +A typical use case is: + +``` +[A portion of text that may cross a page break.]{#mylbl refanchor=both} + +See [mylbl-beg>mylbl-end]{.tcrf}. +``` + ### Page ranges You can refer to a page range like this: diff --git a/sample.md b/sample.md index de2ec76..a4a0906 100644 --- a/sample.md +++ b/sample.md @@ -33,3 +33,9 @@ Here are some precisions.[^2] * Where are the notes? → [my-evaluation, format]{.tcrf} []{#toc-notes-end} + +[A portion of text that may cross a page break.]{#doubledlbl refanchor=both} + +[And this one is labelized at the end.]{#lblatend refanchor=end} + +See [doubledlbl-beg>doubledlbl-end]{.tcrf}. diff --git a/test/sample-context.native b/test/sample-context.native index d71fb71..77aa293 100644 --- a/test/sample-context.native +++ b/test/sample-context.native @@ -389,4 +389,67 @@ ] ] , Para [ Str "" , Span ( "toc-notes-end" , [] , [] ) [] ] +, Para + [ Str "" + , Span + ( "doubledlbl" , [] , [ ( "refanchor" , "both" ) ] ) + [ Str "" + , Span ( "doubledlbl-beg" , [] , [] ) [] + , Str "A" + , Space + , Str "portion" + , Space + , Str "of" + , Space + , Str "text" + , Space + , Str "that" + , Space + , Str "may" + , Space + , Str "cross" + , Space + , Str "a" + , Space + , Str "page" + , Space + , Str "break." + , Str "" + , Span ( "doubledlbl-end" , [] , [] ) [] + ] + ] +, Para + [ Str "" + , Span + ( "lblatend" , [] , [ ( "refanchor" , "end" ) ] ) + [ Str "And" + , Space + , Str "this" + , Space + , Str "one" + , Space + , Str "is" + , Space + , Str "labelized" + , Space + , Str "at" + , Space + , Str "the" + , Space + , Str "end." + , Str "" + , Span ( "lblatend" , [] , [] ) [] + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "context") + "\\crossrefenum{{doubledlbl-beg to doubledlbl-end}}" + ] + , Str "." + ] ] diff --git a/test/sample-latex.native b/test/sample-latex.native index 90e1761..7cfcb88 100644 --- a/test/sample-latex.native +++ b/test/sample-latex.native @@ -388,4 +388,67 @@ [ RawInline (Format "latex") "\\label{toc-notes-end}" , Span ( "toc-notes-end" , [] , [] ) [] ] +, Para + [ RawInline (Format "latex") "\\label{doubledlbl}" + , Span + ( "doubledlbl" , [] , [ ( "refanchor" , "both" ) ] ) + [ RawInline (Format "latex") "\\label{doubledlbl-beg}" + , Span ( "doubledlbl-beg" , [] , [] ) [] + , Str "A" + , Space + , Str "portion" + , Space + , Str "of" + , Space + , Str "text" + , Space + , Str "that" + , Space + , Str "may" + , Space + , Str "cross" + , Space + , Str "a" + , Space + , Str "page" + , Space + , Str "break." + , RawInline (Format "latex") "\\label{doubledlbl-end}" + , Span ( "doubledlbl-end" , [] , [] ) [] + ] + ] +, Para + [ RawInline (Format "latex") "\\label{lblatend}" + , Span + ( "lblatend" , [] , [ ( "refanchor" , "end" ) ] ) + [ Str "And" + , Space + , Str "this" + , Space + , Str "one" + , Space + , Str "is" + , Space + , Str "labelized" + , Space + , Str "at" + , Space + , Str "the" + , Space + , Str "end." + , RawInline (Format "latex") "\\label{lblatend}" + , Span ( "lblatend" , [] , [] ) [] + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "latex") + "\\crossrefenum{{doubledlbl-beg to doubledlbl-end}}" + ] + , Str "." + ] ] diff --git a/test/sample-opendocument.native b/test/sample-opendocument.native index d07ef34..fbd1f37 100644 --- a/test/sample-opendocument.native +++ b/test/sample-opendocument.native @@ -394,4 +394,67 @@ ] ] , Para [ Str "" , Span ( "toc-notes-end" , [] , [] ) [] ] +, Para + [ Str "" + , Span + ( "doubledlbl" , [] , [ ( "refanchor" , "both" ) ] ) + [ Str "" + , Span ( "doubledlbl-beg" , [] , [] ) [] + , Str "A" + , Space + , Str "portion" + , Space + , Str "of" + , Space + , Str "text" + , Space + , Str "that" + , Space + , Str "may" + , Space + , Str "cross" + , Space + , Str "a" + , Space + , Str "page" + , Space + , Str "break." + , Str "" + , Span ( "doubledlbl-end" , [] , [] ) [] + ] + ] +, Para + [ Str "" + , Span + ( "lblatend" , [] , [ ( "refanchor" , "end" ) ] ) + [ Str "And" + , Space + , Str "this" + , Space + , Str "one" + , Space + , Str "is" + , Space + , Str "labelized" + , Space + , Str "at" + , Space + , Str "the" + , Space + , Str "end." + , Str "" + , Span ( "lblatend" , [] , [] ) [] + ] + ] +, Para + [ Str "See" + , Space + , Span + ( "" , [ "tcrf" ] , [] ) + [ RawInline + (Format "opendocument") + "pp.\160000\8211000" + ] + , Str "." + ] ] diff --git a/text-crossrefs.lua b/text-crossrefs.lua index 46cd595..ac7201f 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -3,6 +3,7 @@ local stringify = pandoc.utils.stringify local TEXT_CROSSREF_CLASS = 'tcrf' local REF_TYPE_ATTR = 'reftype' local PREFIXED_ATTR = 'prefixref' +local PLACE_LABEL_ATTR = 'refanchor' local IS_CONFIG_ARRAY = { ['additional_types'] = true } local RAW_ATTRIBUTE @@ -202,6 +203,25 @@ local function map_spans_to_notelabels(note) end end +local function control_label_placement(span) + local label_placement = span.attributes[PLACE_LABEL_ATTR] + if label_placement then + local id = span.identifier + if label_placement == 'end' then + span.content:insert(pandoc.Span({}, { id = id })) + span.identifier = nil + elseif label_placement == 'both' then + span.content:insert(1, pandoc.Span({}, { id = id .. '-beg' })) -- for DOCX/ODT + span.content:insert(pandoc.Span({}, { id = id .. '-end' })) + span.identifier = nil + elseif label_placement ~= 'beg' then + error('Invalid value ' .. label_placement .. ' on attribute ' .. PLACE_LABEL_ATTR .. ': ' .. + 'shoud be “beg” (default), “end” of “both”.') + end + end + return span +end + local function make_label(label) -- pandoc.Null() cannot be used here because it is a Block element. local label_pandoc_object = pandoc.Str('') @@ -600,6 +620,7 @@ return { { Meta = tweak_footnote_if_ConTeXt }, { Note = set_notelabels }, { Note = map_spans_to_notelabels }, + { Span = control_label_placement }, { Span = labelize_span }, { Span = format_enum } } From 8772547d05f861da3d96a50b4f127a8ad4b57caf Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Mon, 20 Feb 2023 21:48:08 +0100 Subject: [PATCH 19/21] Added warning about header-includes for ConTeXt --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 575c5d6..87c9e2c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,18 @@ When opening for the first time a file produced by Pandoc with _text-crossrefs_, you should have to refresh the fields in order to get the correct values. In LibreOffice, press `F9`; in Word, a dialog box should appear when the file opens. -### TeX-based formats +### ConTeXt specifically + +Your template should include the following directive before `\starttext` +(as in the default template for ConTeXt): + +``` +$for(header-includes)$ +$header-includes$ +$endfor$ +``` + +### All TeX-based formats All references are wrapped in a macro named `\crossrefenum`. It has two optional arguments: From df1ae4566b125678f7aa21f3fa246ea40d6a552b Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 15 Mar 2023 00:00:00 +0100 Subject: [PATCH 20/21] Improved and simplified code to support labels on notes in ConTeXt The former redefinition of \footnote was less elegant and caused errors when a \footnote without a final label was the last element in a group.' --- text-crossrefs.lua | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/text-crossrefs.lua b/text-crossrefs.lua index ac7201f..d9f631f 100644 --- a/text-crossrefs.lua +++ b/text-crossrefs.lua @@ -21,28 +21,13 @@ local RAW_ATTRIBUTE and redefine the macro so that it takes it into account. ]]-- -local function tweak_footnote_if_ConTeXt(metadata) +local function support_footnote_label_ConTeXt(metadata) if RAW_ATTRIBUTE == 'context' then - local footnote_redefinition = [[ -\catcode`\@=11 -\let\origfootnote\footnote -\def\footnote#1#2{ - \def\tcrf@secondArg{#2}% - \def\tcrf@bracket{[}% - \ifx\tcrf@secondArg\tcrf@bracket - \def\tcrf@todo{\tcrf@footnote@withlabel{#1}#2} % - \else - \def\tcrf@todo{\origfootnote{#1}#2}% - \fi - \tcrf@todo -} -\def\tcrf@footnote@withlabel#1[#2]{\origfootnote[#2]{#1}} -\catcode`\@=13 - ]] + local label_macro_def = '\n\\def\\withfirstopt[#1]#2{#2[#1]}\n' if not metadata['header-includes'] then metadata['header-includes'] = pandoc.MetaBlocks(pandoc.RawBlock('context', '')) end - metadata['header-includes']:insert(pandoc.RawBlock('context', footnote_redefinition)) + metadata['header-includes']:insert(pandoc.RawBlock('context', label_macro_def)) end return metadata end @@ -254,20 +239,20 @@ local collect_note_labels = { local function make_notelabel(pos) -- About the strategy followed with ConTeXt, - -- see above tweak_footnote_if_ConTeXt. + -- see above support_footnote_label_ConTeXt. local raw_code = '' if pos == 'begin' then if RAW_ATTRIBUTE == 'openxml' then raw_code = string.gsub( '', '{{label}}', current_note_labels[1]) + elseif RAW_ATTRIBUTE == 'context' then + raw_code = '\\withfirstopt[note:' .. current_note_labels[1] .. ']' end elseif pos == 'end' then if RAW_ATTRIBUTE == 'openxml' then raw_code = string.gsub('', '{{label}}', current_note_labels[1]) - elseif RAW_ATTRIBUTE == 'context' then - raw_code = '[note:' .. current_note_labels[1] .. ']' end end return pandoc.RawInline(RAW_ATTRIBUTE, raw_code) @@ -617,7 +602,7 @@ end return { { Meta = configure }, - { Meta = tweak_footnote_if_ConTeXt }, + { Meta = support_footnote_label_ConTeXt }, { Note = set_notelabels }, { Note = map_spans_to_notelabels }, { Span = control_label_placement }, From 360697b2d5e8f62ee19997730790b6ae397de603 Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Wed, 15 Mar 2023 00:01:19 +0100 Subject: [PATCH 21/21] Updated test --- test/sample-context.native | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/sample-context.native b/test/sample-context.native index 77aa293..30f7c06 100644 --- a/test/sample-context.native +++ b/test/sample-context.native @@ -32,7 +32,8 @@ , Str "1866" ] , Str "." - , RawInline (Format "context") "" + , RawInline + (Format "context") "\\withfirstopt[note:my-evaluation]" , Note [ Para [ Str "It" @@ -57,7 +58,7 @@ , Str "." ] ] - , RawInline (Format "context") "[note:my-evaluation]" + , RawInline (Format "context") "" ] , Para [ Str "" @@ -147,7 +148,7 @@ , Str "some" , Space , Str "precisions." - , RawInline (Format "context") "" + , RawInline (Format "context") "\\withfirstopt[note:format]" , Note [ Para [ Str "" @@ -208,7 +209,7 @@ ] ] ] - , RawInline (Format "context") "[note:format]" + , RawInline (Format "context") "" ] , Para [ Str ""