8478 Commits
Author SHA1 Message Date
John MacFarlane 71c02d5116 Fix spacing errors. 2023-08-31 09:27:47 -07:00
John MacFarlane bad922a692 LaTeX writer: fix regression in escaping URLs.
In 3.1.6.1 the `~` was handled properly (either literally or with
`%E7`).  This broke in 3.1.6.2, which used URI encoding in both
cases and didn't escape the `\` before `%E7`. This patch restores
the former behavior: `~` isn't escaped if it isn't escaped in the
original URL, and if it is, a backslash is added before `%`.

Closes #9043.
2023-08-31 08:28:40 -07:00
John MacFarlane 6666599af9 Fix compiler warning by removing redundant definition. 2023-08-30 22:32:47 -07:00
John MacFarlane 1e43eb46ce Org reader: don't parse alphabetical lists...
...unless the `fancy_lists` extension is enabled.
Closes #9042.
2023-08-30 22:01:41 -07:00
Julia Diaz e6470e3f7d JATS reader: Multilevel support for <permissions> metadata (#9037)
This revises the earlier support for `<permissions>`: now metadata objects
with multiple fields are created, matching the structure in JATS.
2023-08-30 08:13:03 -07:00
John MacFarlane 09de84fff4 Support images with wikilink syntax.
E.g. `![[foo|bar]]`.  (This requires enabling one of the `wikilinks`
extensions.)

Closes #8853.
2023-08-29 20:04:39 -07:00
John MacFarlane 7dca09d03a Markdown: Allow a citation or reference link to be parsed after a !.
Closes #8254.
2023-08-29 19:25:30 -07:00
John MacFarlane cd3fcd5c0e Markdown reader: fix dropped ! before nonexistent reference.
In e.g. `![foo]` the `!` would be silently dropped if `[foo]`
wasn't a reference link label.

Closes #9038.
2023-08-29 19:14:50 -07:00
John MacFarlane 353177f9e7 Use \cite and \bibitem to link up citations, even with citeproc.
See #9031 and discussion in #9020. This will give us better
accessibility; when tagging is enabled, the citation can be
linked to the bibliography entry.

This changes some of the details of the layout and the default
template. We now make CSLReferences a special enumitem list
that will contain `\bibitem`s.

Internal links inside citations to ids beginning in `ref-` are
put inside a `\cite` instead of `\hyperref`.

Closes #9031.
2023-08-29 09:23:50 -07:00
Julia Diaz 9d28e6029f Add support for <permissions> metadata 2023-08-28 08:33:57 -07:00
Amneesh Singh e4467ba10c Org reader: allow escaping commas in macro arguments
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
2023-08-26 17:16:34 -07:00
John MacFarlane f7035d080c LaTeX writer link/target improvements.
+ Use `\phantomsection` and `\label` instead of `\hypertarget`.
+ Use `\hyperref` for LaTeX internal links, `\hyperlink` for
  beamer (since `\hyperref` doesn't seem to work).

Closes #9022.
2023-08-26 16:19:01 -07:00
Julia Diaz 9934044668 Correct name of JATS element attrib 2023-08-26 16:07:56 -07:00
John MacFarlane 5410514567 Man writer: avoid a .PP right after a section heading.
This is at best a no-op (in groff man and mandoc) and at worst
(in some formatters) may create extra whitespace.
See #9020.
2023-08-25 21:48:34 -07:00
John MacFarlane a6fe02f46a Man writer: improvements to code and code blocks.
The aim here (see #9020) is to produce more standard and more
portable man pages.  To that end:

- We revert the fanciness introduced in #7506, which employs a
  custom font name V and a macro that makes this act like boldface
  in a terminal and monospace in other formats.  Unfortunately,
  this code uses a mechanism that is not portable (and does not
  work in mandoc).

- Instead of using V for inline code, we simply use CR.
  Note that `\f[CR]` is emitted instead of plain `\f[C]`,
  because there is no C font in man.  (This produces warnings
  in recent versions of groff.)

- For code blocks, we now use the `.EX` and `.EE` macros,
  together with `.IP` for spacing and indentation.  This gives
  more standard code that can be better interpreted e.g. by mandoc.
2023-08-25 21:35:47 -07:00
John MacFarlane 87716265c1 Man writer: don't emit .hy...
regardless of setting of `hyphenate` variable.  See #9020.
2023-08-24 21:24:33 -07:00
John MacFarlane 3cb6130d1a JATS writer: fix placement of ref-list...
...when no title is specified for the reference section.
(In this case we place it in `back` with an empty title.)
Closes #9017.
2023-08-23 16:10:00 -07:00
John MacFarlane d21a9cd7f8 Also escape % in URLs.
This improves the fix to #9017 in commit
7c4354646b

An alternative would be to avoid backslash escaping `#` and `%`
in URLs, and instead always add `fragile` to the slide environment.
2023-08-23 12:37:49 -07:00
John MacFarlane 7c4354646b LaTeX writer: backslash-escape # in URLs. Closes #9014. 2023-08-23 08:04:57 -07:00
John MacFarlane 1d951b3e7d Fix spacing errors. 2023-08-22 13:42:56 -07:00
John MacFarlane 40accba747 Typst writer: use ~ for nonbreaking space.
And escape literal `~`.
Closes #9010.
2023-08-21 11:29:27 -07:00
John MacFarlane 70329edcd7 LaTeX writer: improve internal links and targets.
We no longer wrap section headings in a `\hypertarget`.
This is unnecessary (hyperref creates an anchor based on the
label) and it interferes with tagging.

In addition, we now use `\hyperref` rather than `\hyperlink`
for internal links.

Currently `\hypertarget` is still being used for link anchors
not on headings.

Closes #8744. Thanks to @u-fischer.
2023-08-19 09:52:01 -07:00
John MacFarlane 068fce4293 Docx reader: omit "Table NN" from caption.
Closes #9002.
2023-08-18 17:50:59 -07:00
Brian Leung 2dde57569a Org reader: allow example lines to end immediately after the colon
See the regexp at https://git.savannah.gnu.org/cgit/emacs/org-mode.git/tree/lisp/org-element.el?h=d1e4b9351941aa9241ab3aa0a34256376b7eca94#n2420.
2023-08-18 10:00:49 -07:00
John MacFarlane 6067e477ac Docx reader: Avoid spurious block quotes in list items.
The docx reader was overzealous in detecting indented
paragraphs as block quotes, leading to list items sometimes
being put in block quotes (especially in docx created by
Google Docs).

Closes #8836.
2023-08-14 10:07:14 -07:00
Julia Diaz 6673f832ea Fix display of block elements in JATS reader (PR #8971)
A number of block elements, like disp-quote, list, and disp-formula, were always treated as inlines if appearing inside paragraphs, even if their usage granted a separate block. The function isElementBlock has been refined to prevent this, and a number of specific parse cases have been added to parseBlock.

Also, some minimal cleanup of the test file, in order for it to pass XML validation against the JATS DTD 1.3 (it was not compliant with the current or any previous versions of JATS).

Closes #8889.
2023-08-10 13:02:43 -07:00
John MacFarlane cbb33fefb7 LaTeX writer: Improve escaping of URIs in href, url.
Closes #8992.
2023-08-09 12:09:41 -07:00
John MacFarlane cc371a9485 Typst writer: put the label in right place for Div, use #block.
Closes #8991.

Previously we were putting the label at the beginning of
the Div's contents, but according to the documentation such a
label gets attached to the *preceding* element.  We now use an
explicit `#block` and add the label at the end.
2023-08-09 11:38:38 -07:00
John MacFarlane e611edb7d8 HTML reader: avoid duplicate id on header and div.
Closes #8991.
2023-08-09 11:36:32 -07:00
John MacFarlane d3f8f50264 ODT writer: Use a style for Highlighted, so color can be adjusted. 2023-08-06 11:09:04 -07:00
John MacFarlane e87addb58f HTML reader: properly calculate RowHeadColumns.
The previous algorithm did not handle rowspans; this one does.
Closes #8984.
2023-08-05 23:00:14 -07:00
John MacFarlane 1d62883e14 HTML reader: require unanimity for RowHeadColumns.
Previously we used the max.  #8634 switched to the min, but this
had bad results.  This commit sets the RowHeadColumns to the consensus
value from all rows, or 0 if there is no consensus.

See #8984.
2023-08-05 11:48:29 -07:00
John MacFarlane 0a1ea3d8ca HTML reader: fix bug in calculation of RowHeadColumns.
We were adding up cells, not colspans.
Note: there may still be incorrect results in the presence of
rowspans.

See https://github.com/jgm/pandoc/issues/8984#issuecomment-1666467926
2023-08-05 11:28:03 -07:00
John MacFarlane d7a7f5ad19 Revert "Update TableBody RowHeadColumns caculation: change from max to min (#8634)"
This reverts commit f257c97170.

For the reason, see #8984.  The change caused the "grid shape"
of some tables to change.
2023-08-05 11:16:22 -07:00
John MacFarlane 0873895416 OpenDocument writer: implement syntax highlighting.
Still unimplemented: global background colors, line numbers.

Closes #6710, obsoletes #6717.
2023-08-04 20:43:39 -07:00
John MacFarlane 5e1b9591e1 Started implementing syntax highlighting for ODT.
Currently only colors are supported, not other text styles.

This change includes a new default opendocumnet template.

See #6710.
2023-08-04 13:31:06 -07:00
John MacFarlane 4670722dfa Remove redundant import. 2023-08-04 13:18:25 -07:00
John MacFarlane 4caa9a0808 OpenDocument writer: add syntax highlighting tags for CodeBlock.
We still aren't injecting the style, but this will improve things.
See #6710.
2023-08-04 11:40:05 -07:00
John MacFarlane 655d87657e Support highlighted text in ODT/OpenDocument writers.
See #8960.

This is a prelimary fix. A better fix would use a named style
so colors could be adjusted.
2023-08-04 10:27:10 -07:00
John MacFarlane 7b8e8f6f52 SelfContained: retain attributes in svg tag...
when referring to another svg's content using `<use>`.
Closes #8969.
2023-07-27 09:56:56 -06:00
John MacFarlane 3401849585 SelfContained: Allow units in width and height for svg.
Units are optional but allowed.
2023-07-27 09:19:42 -06:00
John MacFarlane 95140b428b SelfContained: don't coerce calculated width/height to Int.
Fractional values are okay.  See #8969.
2023-07-26 09:58:22 -06:00
John MacFarlane ecb59e1cde SelfContained: fix calculation of svg width and height.
We were computing width and height from viewBox incorrectly.
See #8969.
2023-07-26 09:49:37 -06:00
John MacFarlane 704a07d963 SelfContained: Improve inline SVGs.
- Ensure that width and height attributes don't get specified
  twice is both the img tag and the svg include them.
- Omit unnecessary attributes xmlns, xmlns:xlink, and version on
  svg element.
- Use 20 character rather than 40 character hashes for generated IDs.

Closes #8965.
2023-07-25 23:24:43 -06:00
John MacFarlane 77e01242da Typst writer: escape //.
So it doesn't get interpreted as a comment.

Closes #8966.
2023-07-25 09:23:16 -06:00
John MacFarlane c06b9ab331 ChunkedHTML writer: Fix regression including mathjax script.
The fix for #8620 caused the mathjax script to be included
when the table of contents but not the body text of a page
contains math.  But it broke the case where the table of
contents doesn't contain math but the page does.
This patch fixes the issue.

Closes #8967.
2023-07-25 08:36:31 -06:00
John MacFarlane eddedbfc14 Fix new variant of the vulnerability in CVE-2023-35936.
Guilhem Moulin noticed that the fix to CVE-2023-35936 was incomplete.
An attacker could get around it by double-encoding the malicious
extension to create or override arbitrary files.

    $ echo '![](data://image/png;base64,cHJpbnQgImhlbGxvIgo=;.lua+%252f%252e%252e%252f%252e%252e%252fb%252elua)' >b.md
    $ .cabal/bin/pandoc b.md --extract-media=bar
    <p><img
    src="bar/2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua+%2f%2e%2e%2f%2e%2e%2fb%2elua" /></p>
    $ cat b.lua
    print "hello"
    $ find bar
    bar/
    bar/2a0eaa89f43fada3e6c577beea4f2f8f53ab6a1d.lua+

This commit adds a test case for this more complex attack and fixes
the vulnerability.  (The fix is quite simple: if the URL-unescaped
filename or extension contains a '%', we just use the sha1 hash of the
contents as the canonical name, just as we do if the filename contains
'..'.)
2023-07-20 11:51:28 -07:00
John MacFarlane ce2b023e13 Refine command line option preprocessor and add tests for #8956.
The substantive change here is the `-strue` will now work
instead of being interpreted as `-s -true`.

This is somewhat ad hoc, but I don't think we'll ever have
an output format named `rue`, so it's probably okay.
2023-07-19 15:21:39 -07:00
John MacFarlane eb090c50ff Fix errors for illegal output formats.
Previously if you did `pandoc -s -t bbb`, it would give you
an error about the missing bbb template instead of saying that
it's not a supported output format.
2023-07-19 15:09:12 -07:00
John MacFarlane bec5429e4f Fix regression on short boolean arguments.
In 3.1.5 boolean arguments were allowed an optional argument
(true|false).  This created a regression for uses of fused
short arguments, e.g. `-somyfile.html`, which was equivalent
to `-s -omyfile.html`, but now raised an error because
pandoc attempted to parse `o` as a boolean `true` or `false`.

This change adds a preprocessing step on the raw arguments
before they are sent to the option parser. In this preprocessing
step, `-somyfile.html` would be split into two arguments,
`-s` and `-omyfile.html`.  The splitting happens when a
short boolean option is followed by another short option.

Closes #8956.
2023-07-19 11:56:58 -07:00