packages feed

pandoc-crossref 0.3.0.0 → 0.3.0.1

raw patch · 10 files changed

+457/−213 lines, 10 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

docs/demo/demo.md view
@@ -123,9 +123,9 @@ It's also possible to show lists of figures and tables, like this:  \listoffigures-+[]: hack to split raw blocks \listoftables-+[]: hack to split raw blocks \listoflistings  # Appendix A. Custom labels {label=AppA}
docs/index.md view
@@ -4,27 +4,36 @@ title: 'pandoc-crossref(1)' --- -pandoc-crossref is a pandoc filter for numbering figures, equations, tables and cross-references to them.+pandoc-crossref is a pandoc filter for numbering figures, equations,+tables and cross-references to them.  # Caveats  ## LaTeX output and `--include-in-header` -pandoc-crossref uses metadata variable `header-includes` to add LaTeX definitions to output. However, Pandoc's command line option `--include-in-header`/`-H` overrides this variable. If you need to use `--include-in-header`, add pandoc-crossref-specific definitions as well. See [LaTeX customization](#latex-customization) for more information.+pandoc-crossref uses metadata variable `header-includes` to add LaTeX+definitions to output. However, Pandoc's command line option+`--include-in-header`/`-H` overrides this variable. If you need to use+`--include-in-header`, add pandoc-crossref-specific definitions as well.+See [LaTeX customization](#latex-customization) for more information.  ## pandoc-citeproc and pandoc-crossref -Since pandoc-crossref uses the same citation syntax as pandoc-citeproc, you *have* to run former *before* latter. For example:+Since pandoc-crossref uses the same citation syntax as pandoc-citeproc,+you *have* to run former *before* latter. For example: -```-pandoc -F pandoc-crossref -F pandoc-citeproc file.md -o file.html-```+    pandoc -F pandoc-crossref -F pandoc-citeproc file.md -o file.html  ## Note on leading/trailing spaces in metadata options -Leading and trailing spaces in YAML metadata will most likely be stripped by either YAML parser or Pandoc itself. If you need leading and/or trailing spaces in pandoc-crossref metadata variables, use html entity for space instead, i.e. `&#32;`. For example, if you want reference ranges to be delimited by a dash with spaces (e.g. `2 - 5`), include the following in YAML metadata:+Leading and trailing spaces in YAML metadata will most likely be+stripped by either YAML parser or Pandoc itself. If you need leading+and/or trailing spaces in pandoc-crossref metadata variables, use html+entity for space instead, i.e. `&#32;`. For example, if you want+reference ranges to be delimited by a dash with spaces (e.g. `2 - 5`),+include the following in YAML metadata: -```yaml+``` yaml rangeDelim: '&#32;-&#32;' ``` @@ -34,25 +43,31 @@  # Syntax -Syntax is loosely based on discussion in <https://github.com/jgm/pandoc/issues/813>+Syntax is loosely based on discussion in+<https://github.com/jgm/pandoc/issues/813>  ## Image labels -```markdown+``` markdown ![Caption](file.ext){#fig:label} ``` -To label an (implicit) figure, append `{#fig:label}` (with `label` being something unique to reference this figure by) immediately after image definition.+To label an (implicit) figure, append `{#fig:label}` (with `label` being+something unique to reference this figure by) immediately after image+definition. -This only works on implicit figures, i.e. an image occurring by itself in a paragraph (which will be rendered as a figure with caption by pandoc)+This only works on implicit figures, i.e. an image occurring by itself+in a paragraph (which will be rendered as a figure with caption by+pandoc)  Image block and label *can not* be separated by spaces.  ### Subfigures -It's possible to group figures as subfigures. Basic syntax is as follows:+It's possible to group figures as subfigures. Basic syntax is as+follows: -```markdown+``` markdown <div id="fig:figureRef"> ![subfigure 1 caption](image1.png){#fig:figureRefA} @@ -62,15 +77,23 @@ </div> ``` -To sum up, subfigures are made with a div having a figure `id`. Contents of said div consist of several paragraphs. All but last paragraphs contain one subfigure each, with captions, images and (optionally) reference attributes. Last paragraph contains figure caption.+To sum up, subfigures are made with a div having a figure `id`. Contents+of said div consist of several paragraphs. All but last paragraphs+contain one subfigure each, with captions, images and (optionally)+reference attributes. Last paragraph contains figure caption. -If you put more than one figure in the paragraph, those will still be rendered, but Pandoc will omit subfigure caption in most outputs (but it will work as expected with LaTeX). You can use output-specific hacks to work around that, or use `subfigGrid` (see below).+If you put more than one figure in the paragraph, those will still be+rendered, but Pandoc will omit subfigure caption in most outputs (but it+will work as expected with LaTeX). You can use output-specific hacks to+work around that, or use `subfigGrid` (see below). -Output is customizable, with metadata fields. See [Customization](#customization) for more information.+Output is customizable, with metadata fields. See+[Customization](#customization) for more information. -Default settings will produce the following equivalent Markdown from example above:+Default settings will produce the following equivalent Markdown from+example above: -```markdown+``` markdown <div id="fig:figureRef" class="subfigures">  ![a](image1.png){#fig:figureRefA}@@ -83,19 +106,26 @@ </div> ``` -References to subfigures will be rendered as `figureNumber (subfigureNumber)`, e.g., in this particular example, `[@fig:figureRefA]` will produce `fig. 1 (a)`.+References to subfigures will be rendered as+`figureNumber (subfigureNumber)`, e.g., in this particular example,+`[@fig:figureRefA]` will produce `fig. 1 (a)`. -You can add `nocaption` class to an image to suppress subfigure caption altogether. Note that it will still be counted.+You can add `nocaption` class to an image to suppress subfigure caption+altogether. Note that it will still be counted.  #### Subfigure grid -If you need to align subfigures in a grid, and using output format styles is not an option, you can use `subfigGrid` option. That will typeset subfigures inside a table.+If you need to align subfigures in a grid, and using output format+styles is not an option, you can use `subfigGrid` option. That will+typeset subfigures inside a table. -Rows are formed by different paragraphs, with each image in a separate column.+Rows are formed by different paragraphs, with each image in a separate+column. -Column widths will be taken from `width` attributes of corresponding images, e.g.+Column widths will be taken from `width` attributes of corresponding+images, e.g. -```markdown+``` markdown <div id="fig:coolFig"> ![caption a](coolfiga.png){#fig:cfa width=30%} ![caption b](coolfigb.png){#fig:cfb width=60%}@@ -111,37 +141,53 @@  will produce a table with columns of 30%, 60% and 10% respectively. -Only first row of images is considered for table width computation, other rows are completely ignored.+Only first row of images is considered for table width computation,+other rows are completely ignored. -*Anything* except images is silently ignored. So any text, spaces, soft line breaks etc will silently disappear from output. That doesn't apply to caption paragraph, obviously.+*Anything* except images is silently ignored. So any text, spaces, soft+line breaks etc will silently disappear from output. That doesn't apply+to caption paragraph, obviously. -All images will have width attribute automatically set to `100%` in order to fill whole column.+All images will have width attribute automatically set to `100%` in+order to fill whole column.  Specifying width in anything but `%` will throw an error. -If width for some images in first row is not specified, those will span equally in the remaining space.+If width for some images in first row is not specified, those will span+equally in the remaining space. -If width isn't specified for any image in first row, those will span equally on 99% of page width (due to Pandoc otherwise omitting width attribute for table).+If width isn't specified for any image in first row, those will span+equally on 99% of page width (due to Pandoc otherwise omitting width+attribute for table). -This option is ignored with LaTeX output, but paragraph breaks should produce similar effect, so images should be typeset correctly. TL;DR you don't need `subfigGrid` enabled for it to work with LaTeX, but you can still enable it.+This option is ignored with LaTeX output, but paragraph breaks should+produce similar effect, so images should be typeset correctly. TL;DR you+don't need `subfigGrid` enabled for it to work with LaTeX, but you can+still enable it.  ## Equation labels -```markdown+``` markdown $$ math $$ {#eq:label} ``` -To label a display equation, append `{#eq:label}` (with `label` being something unique to reference this equation by) immediately after math block.+To label a display equation, append `{#eq:label}` (with `label` being+something unique to reference this equation by) immediately after math+block.  Math block and label *can* be separated by one or more spaces. -You can also number all display equations with `autoEqnLabels` metadata setting (see below). Note, however, that you won't be able to reference equations without explicit labels.+You can also number all display equations with `autoEqnLabels` metadata+setting (see below). Note, however, that you won't be able to reference+equations without explicit labels. -Equations numbers will be typeset inside math with `\qquad` before them. If you want to use tables instead, use `tableEqns` option.  Depending on output format, tables might work better or worse than `\qquad`.+Equations numbers will be typeset inside math with `\qquad` before them.+If you want to use tables instead, use `tableEqns` option. Depending on+output format, tables might work better or worse than `\qquad`.  ## Table labels -```markdown+``` markdown a   b   c --- --- --- 1   2   3@@ -150,49 +196,67 @@ : Caption {#tbl:label} ``` -To label a table, append `{#tbl:label}` at the end of table caption (with `label` being something unique to reference this table by). Caption and label *must* be separated by at least one space.+To label a table, append `{#tbl:label}` at the end of table caption+(with `label` being something unique to reference this table by).+Caption and label *must* be separated by at least one space.  ## Section labels -You can also reference sections of any level. Section labels use native pandoc syntax, but must start with "sec:", e.g.+You can also reference sections of any level. Section labels use native+pandoc syntax, but must start with "sec:", e.g. -```markdown+``` markdown  Section {#sec:section} ``` -You can also use `autoSectionLabels` variable to automatically prepend all section labels (automatically generated with pandoc included) with "sec:". Bear in mind that references can't contain periods, commas etc, so some auto-generated labels will still be unusable.+You can also use `autoSectionLabels` variable to automatically prepend+all section labels (automatically generated with pandoc included) with+"sec:". Bear in mind that references can't contain periods, commas etc,+so some auto-generated labels will still be unusable. -WARNING: With LaTeX output, you have to invoke pandoc with `--number-sections`, otherwise section labels won't work. It's also advised with other output formats, since with no numbers in section titles, it would be hard to navigate anyway.+WARNING: With LaTeX output, you have to invoke pandoc with+`--number-sections`, otherwise section labels won't work. It's also+advised with other output formats, since with no numbers in section+titles, it would be hard to navigate anyway.  ### Section numbering -Pandoc doesn't properly support numbering sections in some output formats, and section reference labels (see below).+Pandoc doesn't properly support numbering sections in some output+formats, and section reference labels (see below). -You can let pandoc-crossref handle section numbering instedad. This is done via `numberSections` and `sectionsDepth` metadata options.+You can let pandoc-crossref handle section numbering instedad. This is+done via `numberSections` and `sectionsDepth` metadata options. -`numberSections` controls if pandoc-crossref handles numbering sections, while `sectionsDepth` controls what sections are numbered.+`numberSections` controls if pandoc-crossref handles numbering sections,+while `sectionsDepth` controls what sections are numbered. -Set `sectionsDepth` to `0` to make section numbering consistent with `chaptersDepth`.+Set `sectionsDepth` to `0` to make section numbering consistent with+`chaptersDepth`. -If `sectionsDepth` value is lesser than `0`, all sections will be numbered.+If `sectionsDepth` value is lesser than `0`, all sections will be+numbered. -Otherwise, only header levels up to and including `sectionsDepth` will be numbered.+Otherwise, only header levels up to and including `sectionsDepth` will+be numbered.  ## Section reference labels  ***Not currently supported with LaTeX output*** -If you want to reference some section by a pre-defined label instead of by number, you can specify section attribute `label`, like this:+If you want to reference some section by a pre-defined label instead of+by number, you can specify section attribute `label`, like this: -```markdown+``` markdown  Section {label="Custom Label"} ``` -This label will be used instead of section number in `chapters` output and when referencing section directly (with `@sec:section`).+This label will be used instead of section number in `chapters` output+and when referencing section directly (with `@sec:section`). -Note that with `chapters` output with depth>1, only given section will be referenced by custom label, e.g. with+Note that with `chapters` output with depth\>1, only given section will+be referenced by custom label, e.g. with -```markdown+``` markdown  Chapter 1.  # Section with custom label {#sec:scl label="SCL"}@@ -200,15 +264,19 @@ ![](figure.png){#fig:figure} ``` -`@sec:scl` will translate into `sec. 1.SCL`, and `@fig:figure` into `fig. 1.SCL.1`+`@sec:scl` will translate into `sec. 1.SCL`, and `@fig:figure` into+`fig. 1.SCL.1`  ## Code Block labels -There are a couple options to add code block labels. Those work only if code block id starts with `lst:`, e.g. `{#lst:label}`+There are a couple options to add code block labels. Those work only if+code block id starts with `lst:`, e.g. `{#lst:label}`  ### `caption` attribute -`caption` attribute will be treated as code block caption. If code block has both id and `caption` attributes, it will be treated as numbered code block.+`caption` attribute will be treated as code block caption. If code block+has both id and `caption` attributes, it will be treated as numbered+code block.  <pre> ```{#lst:code .haskell caption="Listing caption"}@@ -216,12 +284,11 @@ main = putStrLn "Hello World!" ``` </pre>- ### Table-style captions -Enabled with `codeBlockCaptions` metadata option. If code block is immediately-adjacent to paragraph, starting with `Listing: ` or `: `, said paragraph will be-treated as code block caption.+Enabled with `codeBlockCaptions` metadata option. If code block is+immediately adjacent to paragraph, starting with `Listing:` or `:`, said+paragraph will be treated as code block caption.  <pre> Listing: Listing caption@@ -231,7 +298,6 @@ main = putStrLn "Hello World!" ``` </pre>- or  <pre>@@ -242,7 +308,6 @@  : Listing caption </pre>- It also allows to specify label in caption, as do tables, for example:  <pre>@@ -253,10 +318,11 @@  : Listing caption {#lst:code} </pre>- ### Wrapping div -Wrapping code block without label in a div with id `lst:...` and class, starting with `listing`, and adding paragraph before code block, but inside div, will treat said paragraph as code block caption.+Wrapping code block without label in a div with id `lst:...` and class,+starting with `listing`, and adding paragraph before code block, but+inside div, will treat said paragraph as code block caption.  <pre> &lt;div id="lst:code" class="listing"&gt;@@ -267,233 +333,394 @@ ``` &lt;/div&gt; </pre>- ## References -```markdown+``` markdown [@fig:label1;@fig:label2;...] or [@eq:label1;@eq:label2;...] or [@tbl:label1;@tbl:label2;...] or @fig:label or @eq:label or @tbl:label ``` -Reference syntax heavily relies on citation syntax. Basic reference is created by writing `@`, then basically desired label with prefix. It is also possible to reference a group of objects, by putting them into brackets with `;` as separator. Similar objects will be grouped in order of them appearing in citation brackets, and sequential reference numbers will be shortened, e.g. `1,2,3` will be shortened to `1-3`.+Reference syntax heavily relies on citation syntax. Basic reference is+created by writing `@`, then basically desired label with prefix. It is+also possible to reference a group of objects, by putting them into+brackets with `;` as separator. Similar objects will be grouped in order+of them appearing in citation brackets, and sequential reference numbers+will be shortened, e.g. `1,2,3` will be shortened to `1-3`. -You can capitalize first reference character to get capitalized prefix, e.g. `[@Fig:label1]` will produce `Fig. ...` by default. Capitalized prefixes are derived automatically by capitalizing first letter of every word in non-capitalized prefix, unless overridden with metadata settings. See [Customization](#customization) for more information.+You can capitalize first reference character to get capitalized prefix,+e.g. `[@Fig:label1]` will produce `Fig. ...` by default. Capitalized+prefixes are derived automatically by capitalizing first letter of every+word in non-capitalized prefix, unless overridden with metadata+settings. See [Customization](#customization) for more information.  ### Linking references -To make references into hyperlinks to referenced element, enable `linkReferences` metadata option. This has no effect on LaTeX output, since in this case, hyperlinking references is handled with `hyperref` LaTeX package.+To make references into hyperlinks to referenced element, enable+`linkReferences` metadata option. This has no effect on LaTeX output,+since in this case, hyperlinking references is handled with `hyperref`+LaTeX package.  ### Custom prefix per-reference -It's possible to provide your own prefix per-reference, f.ex. `[Prefix @reference]` will replace default prefix (`fig.`/`sec.`/etc) with prefix verbatim, e.g. `[Prefix @fig:1]` will be rendered as `Prefix 1` instead of `fig. 1`.+It's possible to provide your own prefix per-reference, f.ex.+`[Prefix @reference]` will replace default prefix (`fig.`/`sec.`/etc)+with prefix verbatim, e.g. `[Prefix @fig:1]` will be rendered as+`Prefix 1` instead of `fig. 1`. -In citation group, citations with the same prefix will be grouped. So, for example `[A @fig:1; A @fig:2; B @fig:3]` will turn into `A 1, 2, B 3`. It can be used to an advantage, although it's a bit more cumbersome than it should be, e.g. `[Appendices @sec:A1; Appendices @sec:A2; Appendices @sec:A3]` will turn into `Appendices @A1-@A3` (with `@A1` and `@A3` being relevant section numbers). Note that non-contiguous sequences of identical prefixes *will not* be grouped.+In citation group, citations with the same prefix will be grouped. So,+for example `[A @fig:1; A @fig:2; B @fig:3]` will turn into+`A 1, 2, B 3`. It can be used to an advantage, although it's a bit more+cumbersome than it should be, e.g.+`[Appendices @sec:A1; Appendices @sec:A2; Appendices @sec:A3]` will turn+into `Appendices @A1-@A3` (with `@A1` and `@A3` being relevant section+numbers). Note that non-contiguous sequences of identical prefixes *will+not* be grouped.  ***Not supported with cleveref LaTeX output.***  ### Prefix suppression -Prepending `-` before `@`, like so `[-@citation]`, will suppress default prefix, e.g. `[-@fig:1]` will produce just `1` (or whatever number it happens to be) without `fig.` prefix.+Prepending `-` before `@`, like so `[-@citation]`, will suppress default+prefix, e.g. `[-@fig:1]` will produce just `1` (or whatever number it+happens to be) without `fig.` prefix. -In citation group, citations with and without prefixes will be in different groups. So `[-@fig:1; @fig:2; -@fig:3]` will be rendered as `1, fig. 2, 3`, so be careful with this feature. Again, non-contiguous sequences are not grouped together.+In citation group, citations with and without prefixes will be in+different groups. So `[-@fig:1; @fig:2; -@fig:3]` will be rendered as+`1, fig. 2, 3`, so be careful with this feature. Again, non-contiguous+sequences are not grouped together.  ## Lists -It's possible to use raw latex commands `\listoffigures`, `\listoftables` and `listoflistings`, which will produce ordered list of figure/table/listings titles, in order of appearance in document.+It's possible to use raw latex commands `\listoffigures`,+`\listoftables` and `listoflistings`, which will produce ordered list of+figure/table/listings titles, in order of appearance in document. -`\listoflistings` depends on other options, and is defined in preamble, so it will work reliably only with standalone/pdf output.+`\listoflistings` depends on other options, and is defined in preamble,+so it will work reliably only with standalone/pdf output. +**NOTE:** With Pandoc 2.0.6 and up, you'll have to explicitly separate+these commands if they are close together, at least when targeting+something besides LaTeX. So this will not work:++``` markdown+\listoffigures++\listoftables++\listoflistings+```++but this will:++``` markdown+\listoffigures+[]: hack to split raw blocks+\listoftables+[]: hack to split raw blocks+\listoflistings+```+ # Usage -Run pandoc with `--filter` option, passing path to pandoc-crossref executable, or simply `pandoc-crossref`, if it's in PATH:+Run pandoc with `--filter` option, passing path to pandoc-crossref+executable, or simply `pandoc-crossref`, if it's in PATH:  `pandoc --filter pandoc-crossref` -If you installed with cabal, it's most likely located in `$HOME/.cabal/bin` on \*NIX systems, `$HOME/Library/Haskell/bin` on Macs, or in `%AppData%\cabal\bin` on Windows.+If you installed with cabal, it's most likely located in+`$HOME/.cabal/bin` on \*NIX systems, `$HOME/Library/Haskell/bin` on+Macs, or in `%AppData%\cabal\bin` on Windows.  ## Customization -There are several parameters that can be set via YAML metadata (either by passing `-M` to `pandoc`, or by setting it in source markdown)+There are several parameters that can be set via YAML metadata (either+by passing `-M` to `pandoc`, or by setting it in source markdown)  A list of variables follows.  ### General options -* `cref`: if True, latex export will use `\cref` from cleveref package. Only relevant for LaTeX output. `\usepackage{cleveref}` will be automatically added to `header-includes`.-* `chapters`: if True, number elements as `chapter.item`, and restart `item` on each first-level heading (as `--chapters` for latex/pdf output)-* `chaptersDepth`, default `1`: header level to treat as "chapter". If `chaptersDepth>1`, then items will be prefixed with several numbers, corresponding to header numbers, e.g. `fig. 1.4.3`.-* `numberSections`, default `false`: if True, pandoc-crossref will prepend section number to section titles (as counted by pandoc-crossref itself).-* `sectionsDepth`, default `0`:-    - sectionsDepth < 0 -- number all sections-    - sectionsDepth == 0 -- be consistent with `chaptersDepths`-    - sectionsDepth > 0 -- number section levels up to and including `sectionsDepth`-* `listings`: if True, generate code blocks for `listings` package. Only relevant for LaTeX output. `\usepackage{listings}` will be automatically added to `header-includes`. You need to specify `--listings` option as well.-* `codeBlockCaptions`: if True, parse table-style code block captions.-* `autoSectionLabels`, default `false`: Automatically prefix all section labels with `sec:`. Note that this messes with pandoc's automatic header references.-* `autoEqnLabels`, default `false`: Automatically number all display equations (i.e. ones defined using `$$...$$`/`\[...\]`). Note that you won't be able to reference equations without explicit labels.-* `tableEqns`, default `false`: Typeset equations and equation numbers in tables instead of embedding numbers into equations themselves. Depending on output format, this might work better or worse.+-   `cref`: if True, latex export will use `\cref` from cleveref+    package. Only relevant for LaTeX output. `\usepackage{cleveref}`+    will be automatically added to `header-includes`.+-   `chapters`: if True, number elements as `chapter.item`, and restart+    `item` on each first-level heading (as `--chapters` for latex/pdf+    output)+-   `chaptersDepth`, default `1`: header level to treat as "chapter". If+    `chaptersDepth>1`, then items will be prefixed with several numbers,+    corresponding to header numbers, e.g. `fig. 1.4.3`.+-   `numberSections`, default `false`: if True, pandoc-crossref will+    prepend section number to section titles (as counted by+    pandoc-crossref itself).+-   `sectionsDepth`, default `0`:+    -   sectionsDepth \< 0 -- number all sections+    -   sectionsDepth == 0 -- be consistent with `chaptersDepths`+    -   sectionsDepth \> 0 -- number section levels up to and including+        `sectionsDepth`+-   `listings`: if True, generate code blocks for `listings` package.+    Only relevant for LaTeX output. `\usepackage{listings}` will be+    automatically added to `header-includes`. You need to specify+    `--listings` option as well.+-   `codeBlockCaptions`: if True, parse table-style code block captions.+-   `autoSectionLabels`, default `false`: Automatically prefix all+    section labels with `sec:`. Note that this messes with pandoc's+    automatic header references.+-   `autoEqnLabels`, default `false`: Automatically number all display+    equations (i.e. ones defined using `$$...$$`/`\[...\]`). Note that+    you won't be able to reference equations without explicit labels.+-   `tableEqns`, default `false`: Typeset equations and equation numbers+    in tables instead of embedding numbers into equations themselves.+    Depending on output format, this might work better or worse.  ### Item title format -* `figureTitle`, default `Figure`: Word(s) to prepend to figure titles, e.g. `Figure 1: Description`-* `tableTitle`, default `Table`: Word(s) to prepend to table titles, e.g. `Table 1: Description`-* `listingTitle`, default `Listing`: Word(s) to prepend to listing titles, e.g. `Listing 1: Description`-* `titleDelim`, default `:`: What to put between object number and caption text.+-   `figureTitle`, default `Figure`: Word(s) to prepend to figure+    titles, e.g. `Figure 1: Description`+-   `tableTitle`, default `Table`: Word(s) to prepend to table titles,+    e.g. `Table 1: Description`+-   `listingTitle`, default `Listing`: Word(s) to prepend to listing+    titles, e.g. `Listing 1: Description`+-   `titleDelim`, default `:`: What to put between object number and+    caption text.  #### Subfigure-specific  See [Subfigures](#subfigures) -* `ccsDelim`, default `,&nbsp;`: delimiter for collected subfigure captions. See [Subfigures](#subfigures) and [Templates](#templates)-* `ccsLabelSep`, default `&nbsp;—&nbsp;`: delimiter used between subfigure label and subfigure caption in collected captions. See [Subfigures](#subfigures) and [Templates](#templates)-* `subfigGrid`, default `false`. If true, typeset subfigures inside a table. Ignored with LaTeX output. See [Subfigures](#subfigures)+-   `ccsDelim`, default `,&nbsp;`: delimiter for collected subfigure+    captions. See [Subfigures](#subfigures) and [Templates](#templates)+-   `ccsLabelSep`, default `&nbsp;—&nbsp;`: delimiter used between+    subfigure label and subfigure caption in collected captions. See+    [Subfigures](#subfigures) and [Templates](#templates)+-   `subfigGrid`, default `false`. If true, typeset subfigures inside a+    table. Ignored with LaTeX output. See [Subfigures](#subfigures)  ### List titles -* `lofTitle`, default `# List of Figures`: Title for list of figures (lof)-* `lotTitle`, default `# List of Tables`: Title for list of tables (lot)-* `lolTitle`, default `# List of Listings`: Title for list of listings (lol)+-   `lofTitle`, default `# List of Figures`: Title for list of figures+    (lof)+-   `lotTitle`, default `# List of Tables`: Title for list of tables+    (lot)+-   `lolTitle`, default `# List of Listings`: Title for list of listings+    (lol)  ### Reference format -* `figPrefix`, default `fig.`, `figs.`: Prefix for references to figures, e.g. `figs. 1-3`-* `eqnPrefix`, default `eq.`, `eqns.`: Prefix for references to equations, e.g. `eqns. 3,4`-* `tblPrefix`, default `tbl.`, `tbls.`: Prefix for references to tables, e.g. `tbl. 2`-* `lstPrefix`, default `lst.`, `lsts.`: Prefix for references to lists, e.g. `lsts. 2,5`-* `secPrefix`, default `sec.`, `secs.`: Prefix for references to sections, e.g. `secs. 2,5`-* `chapDelim`, default `.`: Delimiter between chapter number and item number.-* `rangeDelim`, default `-`: Delimiter between reference ranges, e.g. `eq. 2-5`-* `pairDelim`, default `, `: Delimiter between pair of reference ranges, e.g. `eq. 2-5 <and> 7-9`, or `eq. 2 <and> 7`, but `eq. 2, 4, 6`-* `lastDelim`, default `, `: Delimiter between second-to-last and last reference ranges, e.g. `eq. 2-5, 6-8 <and> 10`. `pairDelim` overrides this for cases of exactly two references/ranges.-* `refDelim`, default `, `: Delimiter between references, e.g. `eq. 2, 5, 7` or `eq. 2-4, 6-8`-* `linkReferences`, default `false`: Make references hyperlinks to the referenced element-* `nameInLink`, default `false`: For single-element references, inlcude prefix into hyperlink (when using `linkReferences`)+-   `figPrefix`, default `fig.`, `figs.`: Prefix for references to+    figures, e.g. `figs. 1-3`+-   `eqnPrefix`, default `eq.`, `eqns.`: Prefix for references to+    equations, e.g. `eqns. 3,4`+-   `tblPrefix`, default `tbl.`, `tbls.`: Prefix for references to+    tables, e.g. `tbl. 2`+-   `lstPrefix`, default `lst.`, `lsts.`: Prefix for references to+    lists, e.g. `lsts. 2,5`+-   `secPrefix`, default `sec.`, `secs.`: Prefix for references to+    sections, e.g. `secs. 2,5`+-   `chapDelim`, default `.`: Delimiter between chapter number and item+    number.+-   `rangeDelim`, default `-`: Delimiter between reference ranges, e.g.+    `eq. 2-5`+-   `pairDelim`, default `,`: Delimiter between pair of reference+    ranges, e.g. `eq. 2-5 <and> 7-9`, or `eq. 2 <and> 7`, but+    `eq. 2, 4, 6`+-   `lastDelim`, default `,`: Delimiter between second-to-last and last+    reference ranges, e.g. `eq. 2-5, 6-8 <and> 10`. `pairDelim`+    overrides this for cases of exactly two references/ranges.+-   `refDelim`, default `,`: Delimiter between references, e.g.+    `eq. 2, 5, 7` or `eq. 2-4, 6-8`+-   `linkReferences`, default `false`: Make references hyperlinks to the+    referenced element+-   `nameInLink`, default `false`: For single-element references,+    inlcude prefix into hyperlink (when using `linkReferences`) -Note that none of the `*Delim` options are honored with cleveref output. Use cleveref's customization options instead.+Note that none of the `*Delim` options are honored with cleveref output.+Use cleveref's customization options instead. -`figPrefix`, `eqnPrefix`, `tblPrefix`, `lstPrefix` can be YAML arrays. That way, value at index corresponds to total number of references in group, f.ex.+`figPrefix`, `eqnPrefix`, `tblPrefix`, `lstPrefix` can be YAML arrays.+That way, value at index corresponds to total number of references in+group, f.ex. -```yaml+``` yaml figPrefix:   - "fig."   - "figs." ``` -Will result in all single-value references prefixed with "fig.", and all reference groups of two and more will be prefixed with "figs.":+Will result in all single-value references prefixed with "fig.", and all+reference groups of two and more will be prefixed with "figs.": -```markdown+``` markdown [@fig:one] -> fig. 1 [@fig:one; @fig:two] -> figs. 1, 2 [@fig:one; @fig:two; @fig:three] -> figs. 1-3 ``` -They can be YAML strings as well. In that case, prefix would be the same regardless of number of references.+They can be YAML strings as well. In that case, prefix would be the same+regardless of number of references. -They can also be used with first character capitalized, i.e. `FigPrefix`, etc. In this case, these settings will override default reference capitailzation settings.+They can also be used with first character capitalized, i.e.+`FigPrefix`, etc. In this case, these settings will override default+reference capitailzation settings.  ### Custom numbering  See [Custom Numbering Schemes](#custom-numbering-schemes) -* `figLabels`, default unset: custom numbering scheme for figures.-* `subfigLabels`, default `alpha a`: custom numbering scheme for subfigures.-* `eqnLabels`, default unset: custom numbering scheme for equations.-* `tblLabels`, default unset: custom numbering scheme for tables.-* `lstLabels`, default unset: custom numbering scheme for listings.-* `secLabels`, default unset: custom numbering scheme for sections.+-   `figLabels`, default unset: custom numbering scheme for figures.+-   `subfigLabels`, default `alpha a`: custom numbering scheme for+    subfigures.+-   `eqnLabels`, default unset: custom numbering scheme for equations.+-   `tblLabels`, default unset: custom numbering scheme for tables.+-   `lstLabels`, default unset: custom numbering scheme for listings.+-   `secLabels`, default unset: custom numbering scheme for sections.  ### Item title templates  See [Templates](#templates) -* `figureTemplate`, default `$$figureTitle$$ $$i$$$$titleDelim$$ $$t$$`: template for figure captions-* `tableTemplate`, default `$$tableTitle$$ $$i$$$$titleDelim$$ $$t$$`: template for table captions-* `listingTemplate`, default `$$listingTitle$$ $$i$$$$titleDelim$$ $$t$$`: template for listing captions+-   `figureTemplate`, default+    `$$figureTitle$$ $$i$$$$titleDelim$$ $$t$$`: template for figure+    captions+-   `tableTemplate`, default `$$tableTitle$$ $$i$$$$titleDelim$$ $$t$$`:+    template for table captions+-   `listingTemplate`, default+    `$$listingTitle$$ $$i$$$$titleDelim$$ $$t$$`: template for listing+    captions  #### Subfigure templates  See [Subfigures](#subfigures) -* `subfigureTemplate`, default `$$figureTitle$$ $$i$$$$titleDelim$$ $$t$$. $$ccs$$`: template for subfigure divs captions.-* `subfigureChildTemplate`, default `$$i$$`: template for actual subfigure captions.-* `ccsTemplate`, default `$$i$$$$ccsLabelSep$$$$t$$`: template for collected subfigure captions.+-   `subfigureTemplate`, default+    `$$figureTitle$$ $$i$$$$titleDelim$$ $$t$$. $$ccs$$`: template for+    subfigure divs captions.+-   `subfigureChildTemplate`, default `$$i$$`: template for actual+    subfigure captions.+-   `ccsTemplate`, default `$$i$$$$ccsLabelSep$$$$t$$`: template for+    collected subfigure captions.  ### Reference templates  See [Templates](#templates) -* `figPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- figure reference template-* `eqnPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- equation reference template-* `tblPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- table reference template-* `lstPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- listing reference template-* `secPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- section reference template-* `refIndexTemplate`, default `$$i$$$$suf$$` -- individual reference index template-* `subfigureRefIndexTemplate`, default `$$i$$$$suf$$ ($$s$$)` -- subfigure reference index template+-   `figPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- figure reference+    template+-   `eqnPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- equation+    reference template+-   `tblPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- table reference+    template+-   `lstPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- listing reference+    template+-   `secPrefixTemplate`, default `$$p$$&nbsp;$$i$$` -- section reference+    template+-   `refIndexTemplate`, default `$$i$$$$suf$$` -- individual reference+    index template+-   `subfigureRefIndexTemplate`, default `$$i$$$$suf$$ ($$s$$)` --+    subfigure reference index template  ### LaTeX customization -Support for above variables with LaTeX/PDF output is limited. In particular, the following variables are honored:+Support for above variables with LaTeX/PDF output is limited. In+particular, the following variables are honored: -* `figureTitle`-* `tableTitle`-* `listingTitle`-* `lofTitle` -- ignores formatting-* `lotTitle` -- ignores formatting-* `lolTitle` -- ignores formatting-* `*Prefix`, upper-/lowercase and single/plural form. Note that with cleveref output, if `*Prefix` is array, only first two items are used, and the rest is ignored.+-   `figureTitle`+-   `tableTitle`+-   `listingTitle`+-   `lofTitle` -- ignores formatting+-   `lotTitle` -- ignores formatting+-   `lolTitle` -- ignores formatting+-   `*Prefix`, upper-/lowercase and single/plural form. Note that with+    cleveref output, if `*Prefix` is array, only first two items are+    used, and the rest is ignored.  Templates are *not* supported. -You can add arbitrary LaTeX commands to document header, however, using `header-includes` metadata field. Please bear in mind, that pandoc-crossref up to and including 0.1.2.1 requires `header-includes` to be YAML array, e.g.+You can add arbitrary LaTeX commands to document header, however, using+`header-includes` metadata field. Please bear in mind, that+pandoc-crossref up to and including 0.1.2.1 requires `header-includes`+to be YAML array, e.g. -```yaml+``` yaml header-includes:     - "\\newcommand{\\pcdoc}{Pandoc-crossref documentation}" ``` -This will be added *before* any customization applied by pandoc-crossref. For a complete list of what is added to template, consult [ModifyMeta.hs][ModifyMeta.hs].--[ModifyMeta.hs]: https://github.com/lierdakil/pandoc-crossref/blob/master/src/Util/ModifyMeta.hs+This will be added *before* any customization applied by+pandoc-crossref. For a complete list of what is added to template,+consult+[ModifyMeta.hs](https://github.com/lierdakil/pandoc-crossref/blob/master/src/Util/ModifyMeta.hs).  ## Templates -pandoc-crossref supports advanced caption customization via caption templates. Templates are specified as YAML metadata variables (see [Customization](#customization)), and are parsed as default Pandoc Markdown. Variables are specified with display math syntax, i.e. `$$var$$` in a template will be replaced with value of variable `var`.-Variables can be specified in YAML metadata block, or from command line (with `-M` switch). There are two special variables, that are set internally:+pandoc-crossref supports advanced caption customization via caption+templates. Templates are specified as YAML metadata variables (see+[Customization](#customization)), and are parsed as default Pandoc+Markdown. Variables are specified with display math syntax, i.e.+`$$var$$` in a template will be replaced with value of variable `var`.+Variables can be specified in YAML metadata block, or from command line+(with `-M` switch). There are two special variables, that are set+internally: -* `i` -- object number, possibly with chapter number (if `chapter=True`)-* `t` -- object caption, as given in source Markdown+-   `i` -- object number, possibly with chapter number (if+    `chapter=True`)+-   `t` -- object caption, as given in source Markdown -Also there is a number of specific variables that are meaningful only in certain contexts:+Also there is a number of specific variables that are meaningful only in+certain contexts: -* `ccs` -- collected subfigure captions. Only applicable to `subfigureTemplate`. Collected captions will be separated by `ccsDelim` and individual captions will be printed with `ccsTemplate`. See [Subfigures](#subfigures)-* `suf` -- reference suffix, applicable to `refIndexTemplate`, `subfigureRefIndexTemplate`-* `s` -- subfigure index, applicable to `subfigureRefIndexTemplate`+-   `ccs` -- collected subfigure captions. Only applicable to+    `subfigureTemplate`. Collected captions will be separated by+    `ccsDelim` and individual captions will be printed with+    `ccsTemplate`. See [Subfigures](#subfigures)+-   `suf` -- reference suffix, applicable to `refIndexTemplate`,+    `subfigureRefIndexTemplate`+-   `s` -- subfigure index, applicable to `subfigureRefIndexTemplate` -`xPrefixTemplate`, where `x` is `fig`, `eqn`, etc, are a special case. Those don't have `t` variable, since there is no caption in source markdown, but instead have `p` variable, that binds to relevant `xPrefix`. This is done this way, since actual prefix vaule can depend on `i`.+`xPrefixTemplate`, where `x` is `fig`, `eqn`, etc, are a special case.+Those don't have `t` variable, since there is no caption in source+markdown, but instead have `p` variable, that binds to relevant+`xPrefix`. This is done this way, since actual prefix vaule can depend+on `i`. -Please note that at the moment, templates are not supported with LaTeX/PDF output.+Please note that at the moment, templates are not supported with+LaTeX/PDF output.  ## Custom Numbering Schemes -It's possible to use other numbering schemes apart from arabic. This is controlled by several metadata options, consult [Customization](#customization) for a list. Possible values are:+It's possible to use other numbering schemes apart from arabic. This is+controlled by several metadata options, consult+[Customization](#customization) for a list. Possible values are: -- `arabic` -- arabic numbers (1, 2, 3 ...)-- `roman` -- roman numbers (I, II, III, IV, ...)-- `alpha x`, where `x` is first letter to start from. This will work for any letter, but will use UTF-8 codepage to determine what's next, so using something strange is not advised. For example, you can safely use `alpha a` to get lowercase latin letters for 26 figures. After that, it will get weird (since basic latin alphabet has 26 letters). Specifically, it will go into characters space (`{`, `|`, `}`, etc). You can consult http://www.fileformat.info/info/unicode/block/basic_latin/utf8test.htm for general idea on letter progression.-- list of strings. You can define a YAML array for numbers. Mapping is 1:1. For example,-    ```yaml-    figLabels: [α, β, γ, 1, 2, 3, I, II, III]-    ```+-   `arabic` -- arabic numbers (1, 2, 3 ...)+-   `roman` -- roman numbers (I, II, III, IV, ...)+-   `alpha x`, where `x` is first letter to start from. This will work+    for any letter, but will use UTF-8 codepage to determine what's+    next, so using something strange is not advised. For example, you+    can safely use `alpha a` to get lowercase latin letters for 26+    figures. After that, it will get weird (since basic latin alphabet+    has 26 letters). Specifically, it will go into characters space+    (`{`, `|`, `}`, etc). You can consult+    http://www.fileformat.info/info/unicode/block/basic\_latin/utf8test.htm+    for general idea on letter progression.+-   list of strings. You can define a YAML array for numbers. Mapping is+    1:1. For example, `yaml   figLabels: [α, β, γ, 1, 2, 3, I, II, III]`     will give first figure label 'α', second -- 'β', etc. -    Note that it will repeat last item in list indefinitely if there are more images than items in list.+    Note that it will repeat last item in list indefinitely if there are+    more images than items in list.  ## Settings file -It is also possible to set variables used by pandoc-crossref with a separate YAML file. If a given variable is not set in metadata, then pandoc-crossref will attempt to read it from file specified by `crossrefYaml` metadata variable, or, if not set, from `pandoc-crossref.yaml` from current working directory. This allows for reusable configurations. One possible application is ad-hoc internationalization.+It is also possible to set variables used by pandoc-crossref with a+separate YAML file. If a given variable is not set in metadata, then+pandoc-crossref will attempt to read it from file specified by+`crossrefYaml` metadata variable, or, if not set, from+`pandoc-crossref.yaml` from current working directory. This allows for+reusable configurations. One possible application is ad-hoc+internationalization.  For example, consider `$HOME/misc/pandoc-crossref-es.yaml`: -```yaml+``` yaml figureTitle: "Figura" tableTitle: "Tabla" figPrefix: "fig."@@ -503,21 +730,30 @@ lotTitle: "# Lista de tablas" ``` -pandoc-crossref will send this data to pandoc wrapped in lines of `---`. The YAML file's first line should specify a variable; it will not pass the variables if it is `---` or a blank line.+pandoc-crossref will send this data to pandoc wrapped in lines of `---`.+The YAML file's first line should specify a variable; it will not pass+the variables if it is `---` or a blank line.  One could use this with pandoc-crossref as follows:  `pandoc -F pandoc-crossref.hs -M "crossrefYaml=$HOME/misc/pandoc-crossref-es.yaml"` -You can also use global configuration files, which are expected in `$HOME/.pandoc-crossref/config.yaml` and `$HOME/.pandoc-crossref/config-$FORMAT.yaml`, where `$FORMAT` is output format, f.ex. `latex` or `epub`. On Windows, `$HOME` in general resolves to user's root directory, e.g. `C:\Users\username\`.+You can also use global configuration files, which are expected in+`$HOME/.pandoc-crossref/config.yaml` and+`$HOME/.pandoc-crossref/config-$FORMAT.yaml`, where `$FORMAT` is output+format, f.ex. `latex` or `epub`. On Windows, `$HOME` in general resolves+to user's root directory, e.g. `C:\Users\username\`.  Priorities are as follows (from highest to lowest): -- document metadata-- `crossrefYaml`/`$CWD/pandoc-crossref.yaml`-- `$HOME/.pandoc-crossref/config-$FORMAT.yaml`-- `$HOME/.pandoc-crossref/config.yaml`+-   document metadata+-   `crossrefYaml`/`$CWD/pandoc-crossref.yaml`+-   `$HOME/.pandoc-crossref/config-$FORMAT.yaml`+-   `$HOME/.pandoc-crossref/config.yaml`  # License -This software is licensed under GNU GPL v2+This program is free software; you can redistribute it and/or modify it+under the terms of the GNU General Public License as published by the+Free Software Foundation; either version 2 of the License, or (at your+option) any later version.
lib/Text/Pandoc/CrossRef/References/Blocks.hs view
@@ -49,7 +49,7 @@   . everywhere (mkT divBlocks `extT` spanInlines opts)   where     runSplitMath | tableEqns opts-                 , not $ isFormat "latex" (outFormat opts)+                 , not $ isLatexFormat (outFormat opts)                  = everywhere (mkT splitMath)                  | otherwise = id @@ -116,7 +116,7 @@           (M.map (\v -> v{refIndex = refIndex lastRef, refSubfigure = Just $ refIndex v})           $ imgRefs_ st)     case outFormat opts of-          f | isFormat "latex" f ->+          f | isLatexFormat f ->             replaceNoRecurse $ Div nullAttr $               [ RawBlock (Format "latex") "\\begin{figure}\n\\centering" ]               ++ cont ++@@ -170,7 +170,7 @@     idxStr <- replaceAttr opts (Right label) (lookup "label" attrs) title tblRefs     let title' =           case outFormat opts of-              f | isFormat "latex" f ->+              f | isLatexFormat f ->                 RawInline (Format "latex") (mkLaTeXLabel label) : title               _  -> applyTemplate idxStr title $ tableTemplate opts     replaceNoRecurse $ Div divOps [Table title' align widths header cells]@@ -181,9 +181,9 @@   = case outFormat opts of       f         --if used with listings package,nothing shoud be done-        | isFormat "latex" f, listings opts -> noReplaceNoRecurse+        | isLatexFormat f, listings opts -> noReplaceNoRecurse         --if not using listings, however, wrap it in a codelisting environment-        | isFormat "latex" f ->+        | isLatexFormat f ->           replaceNoRecurse $ Div nullAttr [               RawBlock (Format "latex")                 $ "\\begin{codelisting}\n\\caption{"++caption++"}"@@ -206,10 +206,10 @@   = case outFormat opts of       f         --if used with listings package, return code block with caption-        | isFormat "latex" f, listings opts ->+        | isLatexFormat f, listings opts ->           replaceNoRecurse $ CodeBlock (label,classes,("caption",stringify caption):attrs) code         --if not using listings, however, wrap it in a codelisting environment-        | isFormat "latex" f ->+        | isLatexFormat f ->           replaceNoRecurse $ Div nullAttr [               RawBlock (Format "latex") "\\begin{codelisting}"             , Para [@@ -227,7 +227,7 @@           , CodeBlock ([], classes, attrs) code           ] replaceBlock opts (Para [Span attrs [Math DisplayMath eq]])-  | not $ isFormat "latex" (outFormat opts)+  | not $ isLatexFormat (outFormat opts)   , tableEqns opts   = do     (eq', idx) <- replaceEqn opts attrs eq@@ -247,7 +247,7 @@ replaceInline opts (Span attrs@(label,_,_) [Math DisplayMath eq])   | "eq:" `isPrefixOf` label || null label && autoEqnLabels opts   = case outFormat opts of-      f | isFormat "latex" f ->+      f | isLatexFormat f ->         let eqn = "\\begin{equation}"++eq++mkLaTeXLabel label++"\\end{equation}"         in replaceNoRecurse $ RawInline (Format "latex") eqn       _ -> do@@ -258,7 +258,7 @@   = do     idxStr <- replaceAttr opts (Right label) (lookup "label" attrs) alt imgRefs     let alt' = case outFormat opts of-          f | isFormat "latex" f -> alt+          f | isLatexFormat f -> alt           _  -> applyTemplate idxStr alt $ figureTemplate opts     replaceNoRecurse $ Image attr alt' img replaceInline _ _ = noReplaceRecurse@@ -274,7 +274,7 @@                  | otherwise  = Right $ "fig:" ++ label       idxStr <- replaceAttr opts label' (lookup "label" attrs) alt imgRefs       case outFormat opts of-        f | isFormat "latex" f ->+        f | isLatexFormat f ->           return $ latexSubFigure x label         _  ->           let alt' = applyTemplate idxStr alt $ figureTemplate opts
lib/Text/Pandoc/CrossRef/References/List.hs view
@@ -31,7 +31,7 @@ import Text.Pandoc.CrossRef.Util.Options  listOf :: Options -> [Block] -> WS [Block]-listOf Options{outFormat=f} x | isFormat "latex" f = return x+listOf Options{outFormat=f} x | isLatexFormat f = return x listOf opts (RawBlock (Format "latex") "\\listoffigures":xs)   = get imgRefs >>= makeList opts lofTitle xs listOf opts (RawBlock (Format "latex") "\\listoftables":xs)
lib/Text/Pandoc/CrossRef/References/Refs.hs view
@@ -60,7 +60,7 @@             fromList (citationPrefix c) <> text ("@" ++ citationId c)               <> fromList (citationSuffix c)     replaceRefs'' = case outFormat opts of-                    f | isFormat "latex" f -> replaceRefsLatex+                    f | isLatexFormat f -> replaceRefsLatex                     _                      -> replaceRefsOther replaceRefs _ x = return x 
lib/Text/Pandoc/CrossRef/Util/ModifyMeta.hs view
@@ -34,7 +34,7 @@  modifyMeta :: Options -> Meta -> Meta modifyMeta opts meta-  | isFormat "latex" (outFormat opts)+  | isLatexFormat (outFormat opts)   = setMeta "header-includes"       (headerInc $ lookupMeta "header-includes" meta)       meta
lib/Text/Pandoc/CrossRef/Util/Util.hs view
@@ -43,6 +43,10 @@ isFormat fmt (Just (Format f)) = takeWhile (`notElem` "+-") f == fmt isFormat _ Nothing = False +isLatexFormat :: Maybe Format -> Bool+isLatexFormat = isFormat "latex" `or'` isFormat "beamer"+  where a `or'` b = (||) <$> a <*> b+ capitalizeFirst :: String -> String capitalizeFirst (x:xs) = toUpper x : xs capitalizeFirst [] = []
pandoc-crossref.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: bff6647405df1883495f3afdc5a0a7b789940dec86718c25961f35c1a017d42f+-- hash: 86d162e72c1cac19cf4b0ceb24dcdf9efadf588a2b3643b57ed2a65e60c29193  name:                pandoc-crossref-version:             0.3.0.0+version:             0.3.0.1 synopsis:            Pandoc filter for cross-references description:         pandoc-crossref is a pandoc filter for numbering figures, equations, tables and cross-references to them. license:             GPL@@ -110,7 +110,7 @@   main-is: pandoc-crossref.hs   hs-source-dirs:       src-  ghc-options: -Wall+  ghc-options: -Wall -threaded   build-depends:       base >=4.9 && <5     , containers >=0.1 && <0.6
src/pandoc-crossref.hs view
@@ -18,7 +18,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -} -{-# LANGUAGE ApplicativeDo, TemplateHaskell #-}+{-# LANGUAGE ApplicativeDo, TemplateHaskell, CPP #-} import Text.Pandoc import Text.Pandoc.Builder import Text.Pandoc.JSON@@ -27,8 +27,6 @@ import Options.Applicative import qualified Options.Applicative as O import Control.Monad-import Paths_pandoc_crossref (version)-import Data.Version (showVersion) import Web.Browser import System.IO.Temp import System.IO@@ -39,18 +37,24 @@ man = $(embedManualText) manHtml = $(embedManualHtml) -data Flag = Version | Man | HtmlMan+data Flag = NumericVersion | Version | Man | HtmlMan  run :: Parser (IO ()) run = do+  numVers <- flag Nothing (Just NumericVersion) (long "numeric-version" <> help "Print version")   vers <- flag Nothing (Just Version) (long "version" <> short 'v' <> help "Print version")   man' <- flag Nothing (Just Man) (long "man" <> help "Show manpage")   hman <- flag Nothing (Just HtmlMan) (long "man-html" <> help "Show html manpage")   fmt <- optional $ strArgument (metavar "FORMAT")-  return $ go (vers <|> man' <|> hman) fmt+  return $ go (numVers <|> vers <|> man' <|> hman) fmt   where     go :: Maybe Flag -> Maybe String -> IO ()-    go (Just Version) _ = putStrLn $ showVersion version+    go (Just Version) _ = putStrLn $+         "pandoc-crossref v" <> VERSION_pandoc_crossref+      <> " built with Pandoc v" <> VERSION_pandoc <> ","+      <> " pandoc-types v" <> VERSION_pandoc_types+      <> " and GHC " <> TOOL_VERSION_ghc+    go (Just NumericVersion) _ = putStrLn VERSION_pandoc_crossref     go (Just Man    ) _ = putStrLn man     go (Just HtmlMan) _ = withSystemTempFile "pandoc-crossref-manual.html" $ \fp h -> do       hPutStrLn h manHtml
test/m2m/subfigures-grid/expect.tex view
@@ -3,17 +3,17 @@ \begin{figure} \centering -\subfloat[1]{\includegraphics[width=0.3\textwidth]{fig1.png}\label{fig:subfig1}}-\subfloat[2]{\includegraphics[width=0.3\textwidth]{fig2.png}\label{fig:subfig2}}-\subfloat[3]{\includegraphics[width=0.3\textwidth]{fig3.png}}+\subfloat[1]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig1.png}\label{fig:subfig1}}+\subfloat[2]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig2.png}\label{fig:subfig2}}+\subfloat[3]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig3.png}} -\subfloat[4]{\includegraphics[width=0.3\textwidth]{fig4.png}\label{fig:subfig4}}-\subfloat[5]{\includegraphics[width=0.3\textwidth]{fig5.png}}-\subfloat[6]{\includegraphics[width=0.3\textwidth]{fig6.png}\label{fig:subfig6}}+\subfloat[4]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig4.png}\label{fig:subfig4}}+\subfloat[5]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig5.png}}+\subfloat[6]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig6.png}\label{fig:subfig6}} -\subfloat[7]{\includegraphics[width=0.3\textwidth]{fig7.png}\label{fig:subfig7}}-\subfloat[8]{\includegraphics[width=0.3\textwidth]{fig8.png}}-\subfloat[9]{\includegraphics[width=0.3\textwidth]{fig9.png}\label{fig:subfig9}}+\subfloat[7]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig7.png}\label{fig:subfig7}}+\subfloat[8]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig8.png}}+\subfloat[9]{\includegraphics[width=0.3\textwidth,height=\textheight]{fig9.png}\label{fig:subfig9}}  \caption{Caption}