Markdown 包与 babel 结合使用时出现错误

Markdown 包与 babel 结合使用时出现错误

我有一个最小的乳胶文件,使用 markdown 和 babel 包:

\documentclass{book}

\usepackage{markdown}
\usepackage[ngerman]{babel}

\markdownSetup{pipeTables,tableCaptions}
\begin{document}
\markdownInput{./test.md}
\end{document}

测试.md文件:

# H1
## H2
Text

当我用

pdflatex --shell-escape document.tex

它会给我以下错误:

(_markdown_document/e0cf625f64983b2c015d517273d026f8.md.tex
Kapitel 1.
! Argument of \__cmd_expandable_grab_D:NNNwNNn has an extra }.
<inserted text> 
                \par 
l.2 \markdownRendererHeadingOne{H1}
                                   \markdownRendererInterblockSeparator
? 
Runaway argument?
! Paragraph ended before \__cmd_expandable_grab_D:NNNwNNn was complete.
<to be read again> 

我尝试使用markdownbabel删除来编译它,它可以编译成功。此外,似乎与 babel 选择的语言无关,它会产生完全相同的错误。

据我了解,错误 ( _markdown_document/e0cf625f64983b2c015d517273d026f8.md.tex) 中提到的文件是由markdown包生成的。其内容如下:

\markdownRendererDocumentBegin
\markdownRendererHeadingOne{H1}\markdownRendererInterblockSeparator
{}\markdownRendererHeadingTwo{H2}\markdownRendererInterblockSeparator
{}Text\markdownRendererDocumentEnd

编译lualatex会产生同样的错误。

对我来说,它看起来并不像错误中所提到的那样有一个“额外的}”。

我有点困惑,因为我无论如何也想不出为什么只在使用 babel 时会出现这个错误。我在互联网上也找不到任何关于这个或类似错误的提及。

我的系统:

  • MacBook Air 2020 配备 M1 处理器。
  • MacOS 13.0.1 Ventura
  • MikTex。这是 MikTex 的报告:
ReportDate: 2022-11-17 12:24:14
CurrentVersion: 22.1
SetupDate: 2022-07-13 11:58:00
SetupVersion: 22.1
Configuration: Regular
GitInfo: 6b3d82b7d / 2022-01-30 11:05:07
OS: Darwin 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct  9 20:14:30 PDT 2022; root:xnu-8792.41.9~2/RELEASE_ARM64_T8103 x86_64
SharedSetup: no
LinkTargetDirectory: /Users/henry/bin
PathOkay: no
LastUpdateCheck: 2022-11-17 09:41:58
LastUpdate: 2022-11-17 09:42:24
LastUpdateDb: 2022-11-17 09:41:58
SystemAdmin: no
RootPrivileges: no
AdminMode: no
Root0: /Users/henry/Library/Application Support/MiKTeX/texmfs/config
Root1: /Users/henry/Library/Application Support/MiKTeX/texmfs/data
Root2: /Users/henry/Library/Application Support/MiKTeX/texmfs/install
UserInstall: /Users/henry/Library/Application Support/MiKTeX/texmfs/install
UserConfig: /Users/henry/Library/Application Support/MiKTeX/texmfs/config
UserData: /Users/henry/Library/Application Support/MiKTeX/texmfs/data

如果有人知道发生了什么,我将非常感激。

答案1

原始代码在执行时失败\MakeUppercase

\chaptermark #1->\markboth {\MakeUppercase

问题是 babel 重新定义了它,现在它已经失效了。firstaid 包包含一个修复程序,但 miktex 忘记更新它了。已经有错误报告了,所以下次更新时它应该可以再次工作。

作为解决方法,您可以通过编译来使用 latex-dev pdflatex-dev,或者您可以手动禁用重新定义:

\documentclass{book}
\def\BabelCaseHack{} %work-around
\usepackage{markdown}
\usepackage[ngerman]{babel}

\markdownSetup{pipeTables,tableCaptions}
\begin{document}
\markdownInput{./test.md}
\end{document}

相关内容