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

已发表: 2022-01-29
在具有 Ubuntu 风格桌面主题的 Linux 笔记本电脑上运行的终端窗口。
Fatmawati Achmad Zaenuri/Shutterstock

您可以在 Linux 上使用pandoc在 40 多种文件格式之间进行转换。 您还可以使用它来创建一个简单的文档即代码系统,方法是用 Markdown 编写、存储在git中,并以任何支持的格式发布。

文档转换和文档即代码

如果您有pandoc's多种文件格式中的任何一种文档,那么将其转换为其他任何一种格式都是小菜一碟。 这是一个方便的工具!

但是,当您将pandoc用作简单的 docs-as-code 系统的基础时,它的真正威力就变得显而易见了。 文档即代码的前提是采用软件开发的一些技术和原则,并将其应用于编写文档,尤其是软件开发项目。 不过,您可以将其应用于任何类型的文档的开发。

软件开发人员使用他们最喜欢的编辑器或集成开发环境 (IDE) 来编写他们的程序。 他们键入的代码保存在文本文件中。 这些包含程序的源代码。

他们使用版本控制系统或 VCS(Git 是最流行的)来捕获源代码在开发和增强时的更改。 这意味着程序员拥有所有版本的源代码文件的完整历史记录。 他或她可以快速访问文件的任何先前版本。 Git 将文件存储在存储库中。 每个开发人员的计算机上都有一个本地存储库和一个通常在云托管的中央共享远程存储库。

广告

当他们准备好生成程序的工作版本时,他们使用编译器来读取源代码并生成二进制可执行文件。

通过使用基于文本的轻量级标记语言编写文档,您可以使用 VCS 对您的写作进行版本控制。 当您准备好分发或发布文档时,您可以使用pandoc根据需要生成尽可能多的不同版本的文档,包括基于 Web 的 (HTML)、文字处理或排版(LibreOffice、Microsoft Word、TeX) 、便携式文档格式 (PDF)、电子书 (ePub) 等。

您可以从一组版本控制的轻量级文本文件中完成所有这些工作。

安装 pandoc

要在 Ubuntu 上安装pandoc ,请使用以下命令:

 sudo apt-get 安装 pandoc 

在 Fedora 上,您需要的命令如下:

 须藤 dnf 安装 pandoc 

在 Manjaro 上,您需要输入:

 sudo pacman -Syu pandoc 

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

 pandoc--版本

使用没有文件的 pandoc

如果您在没有任何命令行选项的情况下使用pandoc ,它也接受键入的输入。 您只需按 Ctrl+D 表示您已完成输入。 pandoc希望您输入 Markdown 格式,并生成 HTML 输出。

让我们看一个例子:

 潘多克

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

广告

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

但是,要使用pandoc做任何有用的事情,我们确实需要使用文件。

降价基础

Markdown 是一种轻量级的标记语言,对某些字符赋予特殊的含义。 您可以使用纯文本编辑器创建 Markdown 文件。

Markdown 可以轻松阅读,因为没有视觉上繁琐的标签来分散文本的注意力。 Markdown 文档中的格式类似于它所代表的格式。 以下是一些基础知识:

  • 要使用斜体强调文本,请将其包裹在星号中。 *This will be emphasized*
  • 加粗文本,请使用两个星号。 **This will be in bold**
  • 标题由数字符号/井号 ( # ) 表示。 文本与哈希之间用空格隔开。 使用一个散列作为顶级标题,使用两个作为二级标题,依此类推。
  • 要创建项目符号列表,列表的每一行都以星号开头,并在文本前插入一个空格。
  • 要创建编号列表,请以数字开头,后跟句点,然后在文本前插入一个空格。
  • 要创建超链接,请将站点名称括在方括号 ( [] ) 中,并将 URL 括在括号 [ () ] 中,如下所示: [Link to How to Geek](https://www.howtogeek.com/) .
  • 要插入图像,请在方括号 ( ![] ) 之前键入一个感叹号。 在括号中键入图像的任何替代文本。 然后,将图像的路径括在括号 [ () “] 中。 这是一个例子: ![The Geek](HTG.png)

我们将在下一节中介绍所有这些的更多示例。

相关:什么是 Markdown,你如何使用它?

转换文件

文件转换很简单。 pandoc通常可以从文件名中找出您正在使用的文件格式。 在这里,我们将从 Markdown 文件生成 HTML 文件。 -o (输出)选项告诉pandoc我们希望创建的文件的名称:

 pandoc -o 示例.html 示例.md 

广告

我们的示例 Markdown 文件 sample.md 包含下图所示的一小段 Markdown。

gedit 编辑器窗口中 sample.md 文件中的 Markdown 文本。

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

浏览器窗口中 sample.md 降价文件的 HTML 呈现。

现在,让我们生成一个可以在 LibreOffice Writer 中打开的 Open Document Format 文本文档:

 pandoc -o 样本.odt 样本.md 

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

从 Markdown 呈现并在 LibreOffice Writer 中打开的 ODT 文档。

一个简洁的触摸是图像的替代文本也用于自动生成图形的标题。

LibreOffice Writer 中自动生成的图形标题。

指定文件格式

-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 文件,显示排版页面的预览。

我们使用了一个名为 Texmaker 的 LaTeX 编辑器。 如果要在 Ubuntu 中安装它,请键入以下内容:

 sudo apt-get install texmaker

在 Fedora 中,命令是:

 须藤 dnf 安装 texmaker

在 Manjaro 中,使用:

 sudo pacman -Syu texmaker

使用模板转换文件

您可能开始了解pandoc提供的灵活性。 您可以编写一次并以几乎任何格式发布。 这是一项了不起的壮举,但文件看起来确实有点香草味。

使用模板,您可以指定pandoc在生成文档时使用的样式。 例如,您可以通过--css选项告诉pandoc使用级联样式表 (CSS) 文件中定义的样式。

我们创建了一个包含以下文本的小 CSS 文件。 它改变了一种样式的级别标题上方和下方的间距。 它还将文本颜色更改为白色,并将背景颜色更改为蓝色:

 h1 {
  颜色:#FFFFFF;
  背景颜色:#3C33FF;
  边距顶部:0px;
  边距底部:1px;
}

完整的命令如下——请注意,我们还使用了独立选项( -s ):

 pandoc -o sample.html -s --css sample.css sample.md
广告

pandoc使用我们极简 CSS 文件中的单一样式并将其应用于一级标题。

在浏览器窗口中,从 Markdown 呈现的 HTML 应用到一级标题的 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 文件生成的。

在 LibreOffice Writer 窗口中,使用 LibreOffice 文档作为样式表从 markdown 呈现的 ODT 文件。

广告

参考文档模板可用于指示文档制作的不同阶段。 例如,您可能有带有“草稿”或“供审阅”水印的模板。 没有水印的模板将用于最终文档。

生成 PDF

默认情况下, pandoc使用 LaTeX PDF 引擎生成 PDF 文件。 确保满足适当的 LaTeX 依赖项的最简单方法是安装 LaTeX 编辑器,例如 Texmaker。

不过,这是一个相当大的安装——Tex 和 LaTeX 都相当庞大。 如果你的硬盘空间有限,或者你知道你永远不会使用 TeX 或 LaTeX,你可能更喜欢生成一个 ODT 文件。 然后,您可以在 LibreOffice Writer 中打开它并将其保存为 PDF。

文档即代码

使用 Markdown 作为您的写作语言有几个优点,包括:

  • 处理纯文本文件速度很快:它们的加载速度比类似大小的文字处理器文件更快,而且在文档中的移动速度也更快。 许多编辑器,包括geditVimEmacs ,都使用 Markdown 文本的语法高亮。
  • 您将拥有所有文档版本的时间线:如果您将文档存储在 VCS(例如 Git)中,您可以轻松查看同一文件的任何两个版本之间的差异。 但是,这仅在文件是纯文本时才真正有效,因为这是 VCS 期望使用的。
  • VCS 可以记录谁做了任何更改,以及何时进行:如果您经常与其他人在大型项目上协作,这将特别有用。 它还为文档本身提供了一个中央存储库。 许多云托管的 Git 服务,例如 GitHub、GitLab 和 BitBucket,在其定价模型中都有免费套餐。
  • 您可以生成多种格式的文档:只需几个简单的 shell 脚本,您就可以从 CSS 和参考文档中提取样式。 如果您将文档存储在与持续集成和持续部署 (CI/CD) 平台集成的 VCS 存储库中,则可以在构建软件时自动生成它们。

相关:什么是 GitHub,它的用途是什么?

最后的想法

pandoc 中的选项和功能比我们在这里介绍的要多得多。 大多数文件类型的转换过程都可以调整和微调。 要了解更多信息,请查看官方(非常详细)pandoc 网页上的优秀示例。

相关:适合开发人员和爱好者的最佳 Linux 笔记本电脑