pandoc 从 Markdown 文件生成 pdf,该文件截断和丢失块内的字符 ``` ... ```

Mar*_*han 6 markdown pandoc

Debian 10和很长一段时间内,使用各种版本的Pandoc,我使用以下命令从降价文档生成pdf文件:

pandoc elk.md -o elk.pdf
Run Code Online (Sandbox Code Playgroud)

elk.md文件内的```bash 块下有以下内容:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Run Code Online (Sandbox Code Playgroud)

它生成一个pdf其行被截断:

在此处输入图片说明

试图复制它,即使选择它作为一个块,在生成的 pdf 上下一行,只保留文本的这一部分:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sou

并且原始内容丢失。
使pandoc正常工作的解决方法是什么?

注 1:手动添加换行符(\必要时还添加其他字符),如下所示:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" \ 
  | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Run Code Online (Sandbox Code Playgroud)

不会是一个解决方案。
如果我在一个块中添加更大的源内容,我不打算检查和编辑它的所有行。

注 2:在此示例中,markdown 没有标题,因此生成的pdf的(奇怪的)默认边距为 6 或 8 (?) 厘米。我通常添加这个标题:

---
geometry: margin=2cm
classoption: fleqn
---
Run Code Online (Sandbox Code Playgroud)
  • 将其边距设置为仅 2 厘米。

  • 允许更好地格式化某些乳胶内容,并在需要时允许使用数学公式,以及文本颜色。

但这并不能改变我面临的麻烦。

Mar*_*han 1

@tarleb:非常感谢。在您的链接中,我发现了一个解决方案的开始,可以大大改善这种情况:

\n

在我的降价标题中添加一个header-includes部分很简单,并且可以消除大部分干扰。\n(我读到其他解决方案(例如定义)\\lstset添加的问题与解决方案一样多,但没有尝试它们)。

\n
---\nheader-includes:\n- \\usepackage{fvextra}\n- \\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,breakanywhere,commandchars=\\\\\\{\\}}\n- \\DefineVerbatimEnvironment{verbatim}{Verbatim}{breaklines,breakanywhere}\n\ngeometry: margin=2cm\nclassoption: fleqn\n---\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

您可以看到改进!
\n但是...插入了一个额外的字符:\xe2\x86\x92如果您复制粘贴内容,您的剪贴板将包含:

\n
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee\n, \xe2\x86\x92\n/etc/apt/sources.list.d/elastic-7.x.list\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 三行,而不是一行
  2. \n
  3. 其中一个尤其错误,有一个不知从何而来的寄生逗号和一个额外的\xe2\x86\x92
  4. \n
\n

如果您复制粘贴此内容,可能会导致问题。
\n(例如,如果您将其粘贴到终端上,有信心,它将开始执行:echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee在考虑执行命令所需的所有内容之前)

\n

命令解释

\n
    \n
  1. \\DefineVerbatimEnvironment{Highlighting}...命令将突出显示环境(突出显示代码语法)重新定义为新的“奇特”逐字环境,具有允许其换行的特殊属性。
  2. \n
  3. \\DefineVerbatimEnvironment{verbatim}...命令对逐字环境(这是一个没有语法突出显示的不同环境)执行类似的操作。
  4. \n
\n