如何使用 pandoc 在 Linux 命令行上转换文件

您可以在 Linux 上使用 pandoc
在 40 多种文件格式之间进行转换。您还可以使用它创建一个简单的文档即代码系统,方法是在 Markdown 中编写,存储在 git
中,并以其支持的任何格式发布。
文档转换和文档即代码
如果您的文档是 pandocs
许多受支持的文件格式中的任何一种,那么将其转换为任何其他格式都轻而易举。这是一个方便的工具!
但是,当您将 pandoc
用作简单的文档即代码系统的基础时,它的真正威力就会显现出来。 docs-as-code 的前提是采用软件开发的一些技术和原则,并将其应用到编写文档中,特别是对于软件开发项目。不过,您可以将它应用于任何类型文档的开发。
软件开发人员使用他们最喜欢的编辑器或集成开发环境 (IDE) 来编写他们的程序。他们键入的代码保存在文本文件中。这些包含程序的源代码。
他们使用版本控制系统或 VCS(Git 是最流行的)来捕获源代码在开发和增强时的更改。这意味着程序员拥有源代码文件所有版本的完整历史记录。他或她可以快速访问文件的任何先前版本。 Git 将文件存储在存储库中。每个开发人员的计算机上都有一个本地存储库和一个通常在云托管的中央共享远程存储库。
当他们准备好生成程序的工作版本时,他们使用编译器读取源代码并生成二进制可执行文件。
通过使用轻量级、基于文本的标记语言编写文档,您可以使用 VCS 对您的编写进行版本控制。当您准备分发或发布文档时,您可以使用 pandoc
根据需要生成尽可能多的不同版本的文档,包括基于网络 (HTML)、文字处理或排版 ( LibreOffice、Microsoft Word、TeX)、便携文档格式(PDF)、电子书(ePub)等。
您可以从一组版本控制的轻量级文本文件中完成所有这些工作。
安装 pandoc
要在 Ubuntu 上安装 pandoc
,请使用以下命令:
sudo apt-get install pandoc

在 Fedora 上,您需要的命令如下:
sudo dnf install pandoc

在 Manjaro 上,你需要输入:
sudo pacman -Syu pandoc

您可以使用 --version
选项检查您安装的版本:
pandoc --version

使用没有文件的 pandoc
如果您在没有任何命令行选项的情况下使用 pandoc
,它也接受键入的输入。您只需按 Ctrl+D 即可表示您已完成输入。 pandoc
希望您输入 Markdown 格式,并生成 HTML 输出。
让我们看一个例子:
pandoc

我们已经输入了几行 Markdown,即将按下 Ctrl+D。

一旦我们这样做,pandoc
就会生成等效的 HTML 输出。

但是,要用 pandoc
做任何有用的事情,我们确实需要使用文件。
降价基础
Markdown 是一种轻量级的标记语言,对某些字符赋予特殊的含义。您可以使用纯文本编辑器来创建 Markdown 文件。
Markdown 可以很容易地阅读,因为没有视觉上笨重的标签来分散对文本的注意力。 Markdown 文档中的格式类似于它所代表的格式。以下是一些基础知识:
- 要用斜体 强调文本,请将其用星号括起来。
*这个会被强调*
- 对于粗体文本,使用两个星号。
**这将以粗体显示**
- 标题由数字符号/井号 (
#
) 表示。文本与散列由空格分隔。对顶级标题使用一个散列,对二级标题使用两个散列,依此类推。 - 要创建项目符号列表,列表的每一行都以星号开头,并在文本前插入一个空格。
- 要创建编号列表,每行以一个数字开头,后跟一个句点,然后在文本前插入一个空格。
- 要创建超链接,请将站点名称括在方括号 (
[]
) 中,并将 URL 括在括号 [()
] 中,如下所示:[如何极客链接](https://linux教程/)
。 - 要插入图像,请在括号 (
![]
) 前键入感叹号。在括号中键入图像的任何替代文本。然后,将图像的路径括在括号 [()
“] 中。这是一个示例:
。
我们将在下一节中介绍所有这些的更多示例。
转换文件
文件转换很简单。 pandoc
通常可以从文件名中找出您正在使用的文件格式。在这里,我们将从 Markdown 文件生成一个 HTML 文件。 -o
(输出)选项告诉 pandoc
我们希望创建的文件的名称:
pandoc -o sample.html sample.md

我们的示例 Markdown 文件 sample.md 包含下图中显示的 Markdown 的一小部分。

创建一个名为 sample.html 的文件。当我们双击该文件时,我们的默认浏览器将打开它。

现在,让我们生成一个可以在 LibreOffice Writer 中打开的 Open Document Format 文本文档:
pandoc -o sample.odt sample.md

ODT 文件与 HTML 文件具有相同的内容。

巧妙的一点是图像的替代文本也用于自动生成图形的标题。

指定文件格式
-f
(from) 和 -t
(to) 选项用于告诉 pandoc
您想要转换的文件格式。如果您正在使用与其他相关格式共享文件扩展名的文件格式,这将很有用。例如,TeX 和 LaTeX 都使用“.tex”扩展名。
我们还使用了 -s
(独立)选项,因此 pandoc
将生成文档所需的所有 LaTeX 序言,使其成为一个完整的、自包含的和良好的-形成了 LaTeX 文件。如果没有 -s
(独立)选项,输出仍然是格式正确的 LaTeX,可以插入另一个 LaTeX 文档,它不会作为独立的 LaTeX 文档正确解析。
我们键入以下内容:
pandoc -f markdown -t latex -s -o sample.tex sample.md

如果您在文本编辑器中打开“sample.tex”文件,您将看到生成的 LaTeX。如果您有 LaTeX 编辑器,则可以打开 TEX 文件以预览 LaTeX 排版命令的解释方式。缩小窗口以适合下图使显示看起来局促,但实际上还不错。

我们使用了一个名为 Texmaker 的 LaTeX 编辑器。如果要在 Ubuntu 中安装它,请键入以下内容:
sudo apt-get install texmaker
在 Fedora 中,命令是:
sudo dnf install texmaker
在 Manjaro 中,使用:
sudo pacman -Syu texmaker
使用模板转换文件
您可能开始了解 pandoc
提供的灵活性。您可以编写一次并以几乎任何格式发布。这是一个了不起的壮举,但文件看起来确实有点普通。
使用模板,您可以指定 pandoc
在生成文档时使用的样式。例如,您可以通过 --css
选项告诉 pandoc
使用级联样式表 (CSS) 文件中定义的样式。
我们创建了一个包含以下文本的小型 CSS 文件。它改变了水平标题上方和下方的间距一种样式。它还将文本颜色更改为白色,将背景颜色更改为蓝色阴影:
h1 {
color: #FFFFFF;
background-color: #3C33FF;
margin-top: 0px;
margin-bottom: 1px;
}
完整命令如下 - 请注意,我们还使用了独立选项 (-s
):
pandoc -o sample.html -s --css sample.css sample.md
pandoc
使用我们极简 CSS 文件中的单一样式并将其应用于一级标题。

使用 HTML 文件时,您可以使用的另一个微调选项是在 Markdown 文件中包含 HTML 标记。这将作为标准 HTML 标记传递到生成的 HTML 文件。
不过,当您只生成 HTML 输出时,应该保留这种技术。如果您使用多种文件格式,pandoc
将忽略非 HTML 文件的 HTML 标记,并将其作为文本传递给那些文件。
我们也可以指定在生成 ODT 文件时使用哪些样式。打开一个空白的 LibreOffice Writer 文档并调整标题和字体样式以满足您的需要。在我们的示例中,我们还添加了页眉和页脚。将文档另存为“odt-template.odt”。
我们现在可以将其用作带有 --reference-doc
选项的模板:
pandoc -o sample.odt --reference-doc=odt-template.odt sample.md

将此与之前的 ODT 示例进行比较。本文档使用不同的字体,具有彩色标题,并包括页眉和页脚。但是,它是从完全相同的“sample.md”Markdown 文件生成的。

参考文档模板可用于指示文档制作的不同阶段。例如,您的模板可能带有“草稿”或“待审阅”水印。没有水印的模板将用于最终文档。
生成 PDF
默认情况下,pandoc
使用 LaTeX PDF 引擎生成 PDF 文件。确保满足适当的 LaTeX 依赖关系的最简单方法是安装 LaTeX 编辑器,例如 Texmaker。
不过,这是一个相当大的安装——Tex 和 LaTeX 都非常庞大。如果你的硬盘空间有限,或者你知道你永远不会使用 TeX 或 LaTeX,你可能更愿意生成一个 ODT 文件。然后,您可以在 LibreOffice Writer 中打开它并将其另存为 PDF。
文档即代码
使用 Markdown 作为您的写作语言有几个优点,包括:
- 处理纯文本文件速度很快:它们的加载速度比类似大小的文字处理器文件快,而且在文档中的移动速度也更快。许多编辑器,包括
gedit
、Vim
和Emacs
,都对 Markdown 文本使用语法高亮。 - 您将拥有文档所有版本的时间轴:如果您将文档存储在 VCS(例如 Git)中,您可以轻松查看同一文件的任意两个版本之间的差异.但是,这仅在文件为纯文本时才有效,因为这是 VCS 期望使用的内容。
- VCS 可以记录谁进行了任何更改以及何时:如果您经常在大型项目中与他人协作,这将特别有用。它还为文档本身提供了一个中央存储库。许多云托管的 Git 服务,例如 GitHub、GitLab 和 BitBucket,在其定价模型中都有免费套餐。
- 您可以生成多种格式的文档:只需几个简单的 shell 脚本,您就可以从 CSS 和参考文档中提取样式。如果您将文档存储在与持续集成和持续部署 (CI/CD) 平台集成的 VCS 存储库中,则可以在构建软件时自动生成它们。
最后的想法
pandoc 中的选项和功能比我们在这里介绍的要多得多。大多数文件类型的转换过程都可以调整和微调。要了解更多信息,请查看官方(非常详细)pandoc 网页上的优秀示例。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts