2483 Commits
Author SHA1 Message Date
John MacFarlane 64a4f60c02 TWiki reader: use "wikilink" class, instead of title. 2025-02-09 11:43:38 -08:00
John MacFarlane 9be0963327 LaTeX writer/template: Improve babel support.
Previously we used the `.ini` files for every language, but
for European languages these tend to provide inferior results
to the `.ldf` files used by classic Babel. Currently Babel
documentation recommends using the classic system for European
languages written in Latin and Cyrillic scripts and Vietnamese.
So the LaTeX writer and template now follow this guidance.

Main languages in the list of languages with good "classic" support
are added to global documentclass options and will be automatically
handled by Babel using the `.ldf` files.

If the main language is not in this list, the `babeloptions` variable
will be set to `provide=*`, which will cause support to be loaded from
the `.ini` file rather than an `.ldf`. So, for example, setting
`-V babeloptions=''` with a polytonic Greek document will cause the
`.ldf` support to be used instead of the `.ini`.

The default setting of this variable can be overwritten, but in most
cases the default should give good results.

Closes #8283.
2025-02-08 10:45:11 -08:00
Evan Silberman 97b36ecb77 Track wikilinks with a class instead of a title
Once upon a time the only metadata element for links in Pandoc's AST was
a title, and it was hijacked to track certain links as having originated
in the wikilink syntax. Now we have Attrs and we can use a class to
handle wikilinks instead.

Requires coordinated changes to commonmark-hs.
2025-02-07 14:04:12 -08:00
Charles Tapley HoytandJez Cope 1eed55f391 Add CRediT roles to JATS
Enable annotating author roles using the Contribution Role Taxonomy
(CRediT) and export this information in conformant JATS

Closes #10152.

Co-Authored-By: Jez Cope <457628+jezcope@users.noreply.github.com>
2025-02-05 21:28:56 -08:00
John MacFarlane f72548a7c2 DocBook reader: Handle title inside orderedlist.
Also some other elements that allow title: blockquote,
calloutlist, etc.
Closes #10594.
2025-02-03 12:33:39 -08:00
John MacFarlane 1470b3a573 DocBook reader: better handle formalpara, example, and sidebar.
Include identifiers and titles in each case.

The code should be credited to @tombolano.

Closes #8666.
2025-02-01 17:04:38 -08:00
John MacFarlane fe3e7c948c ODT reader: create Figure elements for images that are figures.
Closes #10567.
2025-02-01 10:39:31 -08:00
John MacFarlane 6fbb50fc88 Docx writer: repeat reference doc's sectPr for each new section.
Previously we were only carrying over the reference doc's sectPr
at the end of the document, so it wouldn't affect the intermediate
sections that are now added if `--top-level-division` is `chapter`
or `part`. This could lead to bad results (e.g. page numbering
starting only on the last chapter).

Closes #10577.
2025-01-31 11:44:48 -08:00
John MacFarlane a14fe6f446 Update docx golden tests for reference doc changes. 2025-01-31 09:20:51 -08:00
John MacFarlane 42ea0fff1f ODT reader: avoid producing spurious blockquotes in list items.
Closes #9505.
2025-01-30 22:21:10 -08:00
Stephen ReindlandStephen Reindl 3c8ca600ef DOCX reader: do not issue warning for comments with +styles (#10572)
Closes #10571.

Co-authored-by: Stephen Reindl <stephen.reindl@outlook.de>
2025-01-30 15:23:53 -08:00
Evan Silberman d680ce0100 Handle <abbr> as a span-like inline
Closes #5793
2025-01-29 15:59:26 -06:00
silby 0be07a5e4d Test \{,re}newcommand arguments (#10573)
Closes #4470
2025-01-29 11:32:25 -08:00
Gordon Woodhull 220dde406b brace tables with typst:no-figure and typst:text attributes (#10563)
The combination of #9648 Typst property output and #9778
`typst:no-figure` can cause fonts to spill out of tables.

This is because setting Typst text properties across a table
requires `set text(...)` outside the table, and previously we
were relying on the figure to provide a scope.

This adds an extra `#{...}` when the table has class `typst:no-figure`
and also has `typst:text:*` attributes.
2025-01-24 10:48:03 -08:00
Max Heller b95645b0a0 Prefer MIME type when determining extensions for MediaBag items (#10557)
Currently, remote images added to the MediaBag are stored at paths with
extensions determined based on the external URI. For instance, an image
from https://example.com/image.png is stored as <hash>.png. If the
URI does not contain an extension (e.g., https://example.com/image),
then the content-type of the downloaded image is used to determine the
extension.

This change switches the precedence such that content-type is preferred
over extensions contained in the URI. This is necessary because some
images are located at URIs with misleading extensions -- shields.io,
for instance, serves SVGs from URIs with .yml extensions. With this
change, the image/svg+xml content-type is now preferred over the .yml
URI extension. This fixes a bug in the PDF writer in which such an image
would be mishandled due to not being identified as an SVG.
2025-01-21 17:54:47 -08:00
John MacFarlane 96d4f5be51 Citeproc: fix moving punctuation before citation notes.
This previously worked with regular citations, but not author-in-text
citations. Now it works with both.
2025-01-16 08:32:02 -08:00
silby 806dcb0849 Consume blanks after =encoding in pod reader (#10544)
The reader did not properly consume empty lines after =encoding commands,
which produced various incorrect parses depending on the content between
there and the next command.

Fixes #10537
2025-01-15 12:07:26 -08:00
John MacFarlane 2b6554c475 Fix escaping of - in ms writer.
In 5132f1ef33 we added `-` to
the list of characters needing backslash escaping, to accommodate
a change in groff man's behavior, described here:
https://lwn.net/Articles/947941/

This change also led `-` to be escaped in ms output, but that
is wrong; `\-` in ms is a unicode minus sign.

To fix this, we add a Boolean parameter to `escapeString` in
Text.Pandoc.Writers.Roff that determines whether `-` is to
be escaped.  (NB: This is not an exported function in the API.)

The list `standardEscapes` in Text.Pandoc.RoffChar no longer
contains `-`.

Closes #10536.
2025-01-14 09:27:02 -08:00
Hendrik Erz 0a2e8dd1d6 HTML styles: fix style of hr so it works when printed (#10535)
Previously `background-color` was used to style the hr, but this gets ignored
when printing.  This commit uses `border-top` instead.
2025-01-14 09:19:42 -08:00
John MacFarlane c79ef1270e Fix 9495 command test for windows. 2025-01-10 23:43:32 -08:00
John MacFarlane cbe67b9602 Docx reader and writer: support row heads.
Reader: When `w:tblLook` has `w:firstColumn` set (or an equivalent bit
mask), we set row heads = 1 in the AST.

Writer: set `w:firstColumn` in `w:tblLook` when there are row
heads. (Word only allows one, so this is triggered by any number
of row heads > 0.)

Closes #9495.
2025-01-10 22:50:17 -08:00
John MacFarlane 6051d62e56 Docx reader: read table styles as custom styles...
...when `styles` extension is enabled.  Closes #9603.

Also improve manual's coverage of custom styles.
2025-01-10 10:30:08 -08:00
John MacFarlane 968b0c13ee Typst writer: fix handling of pixel image dimensions.
These are now converted to inches as in the LaTeX writer.

Closes #9945.
2025-01-01 23:00:35 -08:00
John MacFarlane 01b54593cc AsciiDoc writer: improve escaping.
Closes #10385.
Closes #2337.
Closes #6424.
2024-12-28 19:43:23 -08:00
John MacFarlane 9fa4fa3c51 RST reader: fix handling of underscores.
Fixes a regression in 3.6 that caused problems parsing
text with underscores.

Closes #10497.
2024-12-27 19:38:56 -08:00
Evan Silberman c4716d41c5 Add Pod reader
Pod ("Plain old documentation") is a markup languaged used principally
to document Perl modules and programs. Since it was originally meant to
be translated pretty directly to man, the semantics are fairly simple.

This Pod reader was developed with reference to the canonical user and
implementer documentation of Pod: https://perldoc.perl.org/perlpod and
https://perldoc.perl.org/perlpodspec.

There are 1490 .pod, .pl, and .pm in the Perl 5.34 distribution found in
/System/Library/Perl on my mac. Of those, this reader dies with a parse
error on 7 of them. All of them seem to be cases where pod commands are
found within a non-colon-prefixed =begin/=end. perlpodspec says I may
treat this as an error.

[API change] adds readPod
2024-12-27 11:10:48 -08:00
John MacFarlane 3c0982c893 MediaWiki reader: allow empty quoted attributes.
Closes #10490.
2024-12-23 10:36:09 -08:00
John MacFarlane e122ca04b0 MediaWiki reader: allow cells starting with +.
Closes #10491.
2024-12-23 10:27:13 -08:00
John MacFarlane b6aff21452 Docx writer: restart footnotes by section by default.
This can be overridden by a final sectPr element in the body
of the reference.docx.

It will only change things for `--top-level-division=chapter`,
since only top-level chapters are put in separate sections.
For that use it will mean that footnote numbers start over with
each chapter, which is usually what is wanted.

Closes #2773.
2024-12-22 13:18:27 -08:00
silby d064ad77a5 RST reader: handle explicit reference links (#10485)
This case was missed when changing the reference link strategy for RST
to allow a single pass.

Closes #10484.
2024-12-22 10:03:00 -08:00
John MacFarlane cfb9bd5cf3 Mediawiki writer: escape line-initial characters...
...that would otherwise be interpreted as list starts.

Closes #9700.
2024-12-20 10:31:43 -08:00
John MacFarlane 7cff3590bc Allow --shift-heading-level-by=-1 to work in djot...
...in the same way it works for other formats (with the top-level
heading being promoted to metadata title).  This needed special
treatment because of the way djot surrounds sections with Divs.

Closes #10459.
2024-12-19 15:14:31 -08:00
John MacFarlane 669c2b8f64 LaTeX reader: handle figure* environment as a figure.
Closes #10472.
2024-12-18 12:11:04 -08:00
John MacFarlane d5c9fe73b8 Textile reader: improve parsing of spans.
The span needs to be separated from its surroundings by spaces.
Also, a span can have attributes, which we now attach.

Closes #9878.
2024-12-17 23:38:41 -08:00
John MacFarlane 9acff9924f Textile reader: inline constructors don't trigger if closer...
...is preceded by whitespace.

Closes #10414.
2024-12-17 20:37:01 -08:00
Evan Silberman 13b3453009 Add mdoc reader
This change introduces a reader for mdoc, a roff-derived semantic markup
language for manual pages. The two relevant contemporary implementations
of mdoc for manual pages are mandoc (https://mandoc.bsd.lv/), which
implements the language from scratch in C, and groff
(https://www.gnu.org/software/groff/), which implements it as roff macros.

mdoc has a lot of semantics specific to technical manuals that aren't
representable in Pandoc's AST. I've taken a cue from the mandoc HTML
output and many mdoc elements are encoded as Codes or Spans with classes
named for the mdoc macro that produced them.

Much like web browsers with HTML, mandoc attempts to produce best-effort
output given all kinds of weird and crappy mdoc input. Part of the
reason it's able to do this is it uses a very accommodating parse tree
and stateful output routines specialized to the output mode, and when it
encounters some macro it wasn't expecting, it can easily give up on
whatever it was outputting and output something else. I've encoded as
much flexibility as I reasonably could into the mdoc reader here, but I
don't know how to be as flexible as mandoc.

This branch has been developed almost exclusively against mandoc's
documentation and implementation of mdoc as a reference, and the
real-world manual pages tested against are those from the OpenBSD base
system. Of ~3500 manuals in mdoc format shipped with a fresh OpenBSD
install, 17 cause the mdoc reader to exit with a parse error. Any
further chasing of edge cases is deferred to future work.

Many of the tests in test/Tests/Readers/Mdoc.hs are derived directly
from mandoc's extensive regression tests.

[API change] Adds readMdoc to the public API
2024-12-05 22:57:18 -08:00
Evan Silberman 126e3330b9 Parameterize Roff escaping
The existing lexRoff does some stuff I don't want to deal with in mdoc
just yet, like lexing tbl, and some stuff I won't do at all, like
handling macro and text string definitions and switching between modes.
Uses a typeclass with associated type families to reuse most of the
escaping code between Roff (i.e. man) and Mdoc.

Future work could improve on this so that more lexing code could be
shared between Man and Mdoc. Mdoc inherits Roff's surface syntax so
hypothetically it makes sense to lex it into tokens that make sense for
roff. But it happens that the Mdoc parser is much easier to build with
an Mdoc specific token stream. Some discussion in jgm/pandoc#10225 about
the rationale.

Adds a test for the roff \A escape, which I accidentally dropped support
for in an earlier iteration without anything complaining.
2024-12-05 22:57:18 -08:00
John MacFarlane d07ada43a0 Docx reader: parse index references as empty Spans.
See #10171.
2024-12-05 10:18:48 -08:00
John MacFarlane c34edf6a7e Depend on latest dev texmath, update tests. 2024-12-03 12:17:31 -08:00
John MacFarlane fabfaabd81 MediaWiki reader: fix indented tables with caption.
Closes #10390.
2024-11-19 09:46:53 -08:00
Evan Silberman a4b8591150 Respect empty LineBlock lines in ANSI writer 2024-11-11 16:00:47 -08:00
Evan Silberman fdef25eb6e Respect empty LineBlock lines in plain writer
The plain writer behaved as a markdown variant with Ext_line_blocks
turned off, and so empty lines in a line block would get eliminated.
This is surprising, since if there's anything where the intent can be
preserved in plain text output it's empty lines.

It's still a bit surprising to have nbsps in plain text output, as in
the test, where the distinction doesn't really matter, but that'd be an
orthogonal change.
2024-11-11 16:00:47 -08:00
John MacFarlane be734d2543 Remove definitions.typst partial.
Remove unnecessary definition of `endnote`.
Incorporate the one remaining definition into `default.typst`.
2024-11-11 10:23:18 -08:00
John MacFarlane d5d2821a4d Typst writer: make template sensitive to a page-numbering variable.
This can be set to an empty string (or, in metadata, to false) for
no page numbers.

Addresses #10370.
2024-11-09 11:38:08 -08:00
Andreas Deininger eeb8b1eb3a Fix typos (#10349) 2024-11-06 10:04:33 -08:00
Andreas Deininger 17634be3f4 JATS writer: correct spelling of suppress attribute (#10350) 2024-11-04 10:07:20 -08:00
John MacFarlane 39b87d4d28 Adjust test suite for typst template changes.
Note: the new templates presuppose typst 0.12; if you try to
use an earlier version of typst, an error will be raised.
2024-10-29 14:49:06 -07:00
John MacFarlane d66f6e943b LaTeX reader: put minipage in specially marked Div.
Closes #10266.
2024-10-25 09:41:59 -07:00
John MacFarlane cd5dab1874 RST reader: implement option lists.
Closes #10318.
2024-10-23 17:26:46 -07:00
Albert Krewinkel 4c66bf2790 HTML writer: unwrap empty incremental divs
Divs are unwrapped if the only purpose of the div seems to be to control
whether lists are presented incrementally on slides.

Closes: #10328
2024-10-23 09:04:54 -07:00