John MacFarlane and Claude
c585c71118
LaTeX reader: support LaTeX3 (xparse) document commands.
...
Support the features described in the LaTeX usrguide
(https://www.latex-project.org/help/documentation/usrguide.pdf ):
- `\New/Renew/Provide/DeclareDocumentCommand` and the corresponding
`...DocumentEnvironment` commands, with argument specifiers
`m o O d D s t r R v e E b` and argument processors (`>{...}`:
`\TrimSpaces`, `\ReverseBoolean`, `\SplitArgument`, `\SplitList`).
Environment end code can refer to the environment's arguments.
- `\ProcessList`, `\UseName`, and `\ExpandArgs` (c, n, N letters).
- The conditionals `\IfNoValueTF`, `\IfValueTF`, `\IfBooleanTF`,
`IfBlankTF` (and variants with just `T` or `F`).
- `\New/Renew/DeclareCommandCopy` and `...EnvironmentCopy`.
- Case changing: `\MakeUppercase`, `\MakeLowercase`, and
`\MakeTitlecase`, `\NoCaseChange`,
`\Declare{Upper,Lower,Title}caseExclusions`; `\CaseSwitch` and
`\Declare*caseMapping`.
- The expandable evaluators `\inteval` and `\fpeval` (a practical
arithmetic subset); `\dimeval` and `\skipeval` substitute their
expression unevaluated.
- `\expandableinput`.
- `\ExplSyntaxOn/Off` regions are tokenized with `:` and `_` as
letters, so expl3 code can be skipped cleanly; `\ShowCommand` and
the ltkeys commands (`\DeclareKeys`, `\SetKeys`,
`\ProcessKeyOptions`, ...) are parsed and ignored.
- Some constants, such as `c_ampersand_str`, are supported in
expl3 regions.
Adds new `ArgSpec` constructors to non-exported module Text.Pandoc.TeX.
New tests in `test/command/latex3-commands.md` and
`test/command/latex3-usrguide.md`. (The latter correspond to the
examples in the user guide and were confirmed against LaTeX output
when possible.)
Closes #7540 .
Co-Authored-By: Claude <noreply@anthropic.com >
2026-09-06 13:28:54 -07:00
..
2025-08-30 00:04:23 +02:00
2026-02-25 11:45:30 +01:00
2025-08-11 17:40:41 -07:00
2026-07-10 16:38:03 +02:00
2025-09-02 17:50:47 +02:00
2025-09-02 08:39:47 +02:00
2026-05-27 17:35:39 +02:00
2025-08-11 17:40:41 -07:00
2025-09-02 17:50:47 +02:00
2025-09-02 08:39:47 +02:00
2026-08-26 09:46:48 -07:00
2025-07-27 11:27:41 -07:00
2025-12-10 23:55:08 +01:00
2026-08-26 09:46:48 -07:00
2025-09-02 17:50:47 +02:00
2026-07-04 18:52:14 +02:00
2026-03-20 11:39:01 +01:00
2025-09-15 10:50:04 +02:00
2026-08-26 09:46:48 -07:00
2026-05-13 17:15:34 +02:00
2025-09-12 11:44:34 +02:00
2026-05-01 00:15:40 +02:00
2026-01-15 10:55:58 +01:00
2026-08-26 09:46:48 -07:00
2026-07-04 18:52:14 +02:00
2025-07-20 00:12:15 -07:00
2025-09-15 10:28:57 +02:00
2026-03-20 11:39:01 +01:00
2025-07-20 00:12:15 -07:00
2025-09-15 10:50:04 +02:00
2025-07-20 00:12:15 -07:00
2025-10-16 11:17:35 +02:00
2026-01-23 23:28:02 +01:00
2025-07-20 00:12:15 -07:00
2025-10-06 23:04:40 +02:00
2025-11-03 20:30:33 +01:00
2025-07-20 00:12:15 -07:00
2026-06-08 19:22:24 +02:00
2025-09-15 10:50:04 +02:00
2025-08-11 17:40:41 -07:00
2026-05-07 12:10:23 +02:00
2026-01-23 23:28:02 +01:00
2026-05-13 17:15:34 +02:00
2026-01-31 10:54:59 +01:00
2026-01-31 10:54:59 +01:00
2026-01-31 10:54:59 +01:00
2026-06-29 11:40:30 +02:00
2026-05-27 17:35:39 +02:00
2025-07-20 00:12:15 -07:00
2025-10-06 23:04:40 +02:00
2025-09-16 12:46:25 +02:00
2025-12-28 07:21:35 -07:00
2025-09-09 10:26:05 +02:00
2025-09-02 08:39:47 +02:00
2025-12-27 22:42:22 -07:00
2026-08-26 09:51:03 -07:00
2026-05-30 19:11:14 +02:00
2025-08-14 19:35:37 +02:00
2026-05-17 11:02:34 +02:00
2025-07-29 10:30:44 -07:00
2025-12-09 19:11:47 +01:00
2025-12-10 23:55:08 +01:00
2025-07-27 11:17:06 -07:00
2025-11-30 13:49:58 +01:00
2025-07-20 00:12:15 -07:00
2026-05-27 17:35:39 +02:00
2026-03-20 11:39:01 +01:00
2026-02-14 16:19:41 +01:00
2025-10-06 23:04:40 +02:00
2025-10-04 19:21:18 +02:00
2026-09-04 09:37:08 -07:00
2026-04-13 12:04:02 +02:00
2025-10-05 16:33:03 +02:00
2026-03-22 10:36:15 +01:00
2026-04-04 15:12:23 -04:00
2026-08-29 17:25:41 -07:00
2025-07-20 00:12:15 -07:00
2025-11-04 14:08:57 +01:00
2025-09-20 21:05:29 +02:00
2025-09-29 11:53:24 +02:00
2025-11-30 13:20:30 +01:00
2025-08-11 17:40:41 -07:00
2025-07-20 00:12:15 -07:00
2025-12-09 19:11:47 +01:00
2025-09-02 13:12:34 +02:00
2025-08-10 18:36:52 -07:00
2025-12-05 11:14:11 +01:00
2026-05-27 17:35:39 +02:00
2025-08-26 18:25:08 +02:00
2025-10-02 13:37:53 +02:00
2025-07-22 19:07:08 +02:00
2025-06-16 12:44:24 -07:00
2026-08-26 09:51:03 -07:00
2025-08-06 12:54:12 -07:00
2025-06-20 13:42:31 -07:00
2026-08-24 12:07:19 -07:00
2026-01-02 11:43:15 -05:00
2026-09-04 09:37:08 -07:00
2025-07-24 14:51:11 -07:00
2025-07-22 20:44:19 -07:00
2025-07-30 12:49:18 -07:00
2025-08-04 13:05:16 -07:00
2025-08-02 10:50:41 -07:00
2025-08-03 15:20:11 -07:00
2025-08-17 17:45:36 +02:00
2025-08-17 17:53:32 +02:00
2025-09-03 12:56:58 +02:00
2025-08-30 00:04:23 +02:00
2025-09-10 09:56:16 +02:00
2025-09-06 10:48:22 +02:00
2025-09-06 10:48:22 +02:00
2025-09-09 10:26:05 +02:00
2025-09-10 09:49:06 +02:00
2025-09-15 10:50:04 +02:00
2025-09-18 11:52:22 +02:00
2025-09-24 21:32:31 +02:00
2025-10-18 17:35:23 +02:00
2025-10-13 12:11:29 +02:00
2025-10-13 20:23:22 +02:00
2025-11-03 23:16:48 +01:00
2025-11-02 15:37:54 +01:00
2025-11-04 14:30:05 +01:00
2025-12-30 12:11:46 -07:00
2025-12-13 22:28:59 +01:00
2026-08-28 09:30:20 -07:00
2026-08-28 09:30:20 -07:00
2025-11-30 12:16:40 +01:00
2025-12-02 12:04:36 +01:00
2025-12-05 10:46:24 +01:00
2025-12-11 11:30:38 +01:00
2025-12-11 19:57:54 +01:00
2025-12-14 16:46:31 +01:00
2025-12-27 23:10:22 -07:00
2025-12-29 10:11:41 -07:00
2026-01-03 11:20:28 -05:00
2026-01-08 11:41:35 +01:00
2026-01-21 17:04:49 +01:00
2026-01-25 13:53:38 +00:00
2026-01-27 10:20:31 +01:00
2026-02-14 14:22:15 +00:00
2026-02-12 21:21:14 +00:00
2026-02-13 11:01:37 +01:00
2026-02-18 10:21:41 +01:00
2026-02-25 11:45:30 +01:00
2026-02-27 11:51:35 +01:00
2026-03-03 15:38:51 +00:00
2026-03-03 22:31:55 +01:00
2026-03-03 22:31:55 +01:00
2026-03-09 14:10:53 +01:00
2026-03-17 19:37:08 +01:00
2026-03-20 11:39:01 +01:00
2026-04-04 15:27:01 -04:00
2026-04-09 10:51:15 +02:00
2026-09-04 09:37:08 -07:00
2026-04-18 13:05:35 +02:00
2026-04-18 23:19:15 +02:00
2026-04-24 10:55:52 +02:00
2026-05-01 00:15:40 +02:00
2026-05-02 13:07:00 +02:00
2026-05-30 19:11:14 +02:00
2026-05-23 18:09:46 +02:00
2026-05-30 19:11:14 +02:00
2026-06-06 22:49:45 +02:00
2026-06-03 16:36:29 +02:00
2026-06-05 17:17:22 +02:00
2026-06-08 23:49:22 +02:00
2026-06-09 08:42:09 +02:00
2026-06-12 21:01:25 +02:00
2026-07-12 12:01:23 +02:00
2026-06-21 15:15:42 +02:00
2026-06-23 12:06:27 +02:00
2026-07-01 11:17:21 +02:00
2026-06-29 19:28:54 +02:00
2026-07-07 20:58:33 +02:00
2026-07-07 16:58:44 +02:00
2026-07-11 10:57:33 +02:00
2026-07-14 17:34:15 +02:00
2026-08-11 09:35:17 -07:00
2026-08-05 07:18:12 -07:00
2026-09-04 09:37:08 -07:00
2026-08-11 11:22:12 -07:00
2026-08-16 10:44:18 -07:00
2026-08-17 09:27:38 -07:00
2026-08-17 10:01:58 -07:00
2026-08-27 14:51:13 -07:00
2026-08-27 14:51:13 -07:00
2026-08-27 19:55:16 -07:00
2025-09-03 18:06:27 +02:00
2025-07-24 14:51:11 -07:00
2026-03-27 23:56:08 -04:00
2025-07-20 15:29:55 -07:00
2026-09-01 22:45:21 -07:00
2026-01-24 14:53:08 +00:00
2026-07-12 12:01:23 +02:00
2026-05-28 00:07:29 +02:00
2026-09-06 13:28:54 -07:00
2026-09-06 13:28:54 -07:00
2025-11-04 09:42:27 +01:00
2025-08-11 17:40:41 -07:00
2025-12-20 21:27:28 -08:00
2025-07-20 00:12:15 -07:00
2025-07-20 17:50:41 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 15:30:14 -07:00
2025-09-02 11:26:10 +02:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-09-02 12:42:16 +02:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2025-07-20 00:12:15 -07:00
2026-03-22 10:36:15 +01:00
2026-07-12 12:51:11 +02:00
2025-08-11 17:40:41 -07:00
2025-12-07 17:07:05 +01:00
2025-09-15 10:50:04 +02:00
2025-10-14 19:07:02 +02:00
2026-05-27 17:35:39 +02:00
2026-06-13 23:38:51 +02:00
2025-10-30 20:02:28 +01:00
2026-02-14 16:19:41 +01:00
2026-02-14 16:19:41 +01:00
2026-04-15 22:25:11 +02:00