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

问题描述 投票:0回答:1

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

pandoc elk.md -o elk.pdf

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

它会生成一个 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

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

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

---
geometry: margin=2cm
classoption: fleqn
---
  • 将其边距设置为仅 2 厘米。

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

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

markdown pandoc
1个回答
1
投票

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

在我的 Markdown 标题中添加

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

---
header-includes:
- \usepackage{fvextra}
- \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,breakanywhere,commandchars=\\\{\}}
- \DefineVerbatimEnvironment{verbatim}{Verbatim}{breaklines,breakanywhere}

geometry: margin=2cm
classoption: fleqn
---

您可以看到改善!
但是...插入了一个额外的字符:

,如果您复制粘贴内容,您的剪贴板将包含:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee
, →
/etc/apt/sources.list.d/elastic-7.x.list
  1. 三行,而不是一行
  2. 其中一个尤其错误,不知从何而来的一个寄生虫逗号和一个额外的

如果您复制粘贴此内容,可能会导致问题。
(例如,如果您自信地将其粘贴到终端上,它将开始执行:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee
,然后再考虑执行命令所需的所有内容)

命令解释

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