返回顶部
首页 > 资讯 > 操作系统 >Linux中如何使用Pandoc来转换文件
  • 330
分享到

Linux中如何使用Pandoc来转换文件

2023-06-27 19:06:09 330人浏览 安东尼
摘要

小编给大家分享一下linux中如何使用Pandoc来转换文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Pandoc 是一个命令行工具,用于将文件从一种标记语言转换为另一种标记语言。标记语言使用标签来标记文档的各个部分。

小编给大家分享一下linux中如何使用Pandoc来转换文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Pandoc 是一个命令行工具,用于将文件从一种标记语言转换为另一种标记语言。标记语言使用标签来标记文档的各个部分。常用的标记语言包括 markdown、ReStructuredText、html、LaTex、ePub 和 Microsoft Word DOCX。

Linux中如何使用Pandoc来转换文件

Pandoc 安装和要求

Pandoc 默认安装在大多数 Linux 发行版中。本教程使用 pandoc-2.2.3.2 和 pandoc-citeproc-0.14.3。如果不打算生成 pdf,那么这两个包就足够了。但是,我建议也安装 texlive,这样就可以选择生成 PDF 了。

通过以下命令在 Linux 上安装这些程序:

sudo apt-get install pandoc pandoc-citeproc texlive

您可以在 Pandoc 的网站上找到其他平台的 安装说明。

我强烈建议安装 pandoc-crossref,这是一个“用于对图表,方程式,表格和交叉引用进行编号的过滤器”。最简单的安装方式是下载 预构建的可执行文件,但也可以通过以下命令从 Haskell 的软件包管理器 cabal 安装它:

cabal updatecabal install pandoc-crossref

如果需要额外的 Haskell 安装信息,请参考 pandoc-crossref 的 GitHub 仓库。

几个例子

我将通过解释如何生成三种类型的文档来演示 Pandoc 的工作原理:

  • 由包含数学公式的 LaTeX 文件创建的网页
  • 由 Markdown 文件生成的 Reveal.js 幻灯片
  • 混合 Markdown 和 LaTeX 的合同文件

创建一个包含数学公式的网站

Pandoc 的优势之一是以不同的输出文件格式显示数学公式。例如,我们可以从包含一些数学符号(用 LaTeX 编写)的 LaTeX 文档(名为 math.tex)生成一个网页。

math.tex 文档如下所示:

% Pandoc math demos$a^2 + b^2 = c^2$$v(t) = v_0 + \frac{1}{2}at^2$$\gamma = \frac{1}{\sqrt{1 - v^2/c^2}}$$\exists x \forall y (Rxy \equiv Ryx)$$p \wedge q \models p$$\Box\diamond p\equiv\diamond p$$\int_{0}^{1} x dx = \left[ \frac{1}{2}x^2 \right]_{0}^{1} = \frac{1}{2}$$e^x = \sum_{n=0}^\infty \frac{x^n}{n!} = \lim_{n\rightarrow\infty} (1+x/n)^n$

通过输入以下命令将 LaTeX 文档转换为名为 mathMathML.html 的网站:

pandoc math.tex -s --mathml  -o mathMathML.html

参数 -s 告诉 Pandoc 生成一个独立的网页(而不是网页片段,因此它将包括 HTML 中的 head 和 body 标签),-mathml 参数强制 Pandoc 将 LaTeX 中的数学公式转换成 MathML,从而可以由现代浏览器进行渲染。

Linux中如何使用Pandoc来转换文件

看一下 网页效果 和 代码,代码仓库中的 Makefile 使得运行更加简单。

制作一个 Reveal.js 幻灯片

使用 Pandoc 从 Markdown 文件生成简单的演示文稿很容易。幻灯片包含顶级幻灯片和下面的嵌套幻灯片。可以通过键盘控制演示文稿,从一个顶级幻灯片跳转到下一个顶级幻灯片,或者显示顶级幻灯片下面的嵌套幻灯片。 这种结构在基于 HTML 的演示文稿框架中很常见。

创建一个名为 SLIDES 的幻灯片文档(参见 代码仓库)。首先,在 % 后面添加幻灯片的元信息(例如,标题、作者和日期):

% Case Study% Kiko Fernandez Reyes% Sept 27, 2017

这些元信息同时也创建了第一张幻灯片。要添加更多幻灯片,使用 Markdown 的一级标题(在下面例子中的第5行,参考 Markdown 的一级标题 )生成顶级幻灯片。

例如,可以通过以下命令创建一个标题为 “Case Study”、顶级幻灯片名为 “Wine Management System” 的演示文稿:

% Case Study% Kiko Fernandez Reyes% Sept 27, 2017# Wine Management System

使用 Markdown 的二级标题将内容(比如包含一个新管理系统的说明和实现的幻灯片)放入刚刚创建的顶级幻灯片。下面添加另外两张幻灯片(在下面例子中的第 7 行和 14 行 ,参考 Markdown 的二级标题 )。

  • 第一个二级幻灯片的标题为 “idea”,并显示瑞士国旗的图像
  • 第二个二级幻灯片的标题为 “Implementation”
[cc]% Case Study% Kiko Fernandez Reyes% Sept 27, 2017# Wine Management System##  Idea## Implementation[/cc]

我们现在有一个顶级幻灯片(#Wine Management System),其中包含两张幻灯片(## Idea 和 ## Implementation)。

通过创建一个由符号 > 开头的 Markdown 列表,在这两张幻灯片中添加一些内容。在上面代码的基础上,在第一张幻灯片中添加两个项目(第 9-10 行),第二张幻灯片中添加五个项目(第 16-20 行):

[cc]% Case Study% Kiko Fernandez Reyes% Sept 27, 2017# Wine Management System##  Idea>- Swiss love their **wine** and cheese>- Create a *simple* wine tracker system![](img/matterhorn.jpg)## Implementation>- Bottles have a RFID tag>- RFID reader (emits and read signal)>- **Raspberry Pi**>- **Server (online shop)**>- Mobile app[/cc]

上面的代码添加了马特洪峰的图像,也可以使用纯 Markdown 语法或添加 HTML 标签来改进幻灯片。

要生成幻灯片,Pandoc 需要引用 Reveal.js 库,因此它必须与 SLIDES 文件位于同一文件夹中。生成幻灯片的命令如下所示:

pandoc -t revealjs -s --self-contained SLIDES \-V theme=white -V slideNumber=true -o index.html
Linux中如何使用Pandoc来转换文件

上面的 Pandoc 命令使用了以下参数:

-t revealjs 表示将输出一个 revealjs 演示文稿 -s 告诉 Pandoc 生成一个独立的文档 –self-contained 生成没有外部依赖关系的 HTML 文件 -V 设置以下变量: theme=white 将幻灯片的主题设为白色 slideNumber=true 显示幻灯片编号 -o index.html 在名为 index.html 的文件中生成幻灯片 为了简化操作并避免键入如此长的命令,创建以下 Makefile:

all: generategenerate:   pandoc -t revealjs -s --self-contained SLIDES \   -V theme=white -V slideNumber=true -o index.htmlclean: index.html   rm index.html.PHONY: all clean generate

可以在 这个仓库 中找到所有代码。

制作一份多种格式的合同

假设你正在准备一份文件,并且(这样的情况现在很常见)有些人想用 Microsoft Word 格式,其他人使用自由软件,想要 ODT 格式,而另外一些人则需要 PDF。你不必使用 OpenOffice 或 LibreOffice 来生成 DOCX 或 PDF 格式的文件,可以用 Markdown 创建一份文档(如果需要高级格式,可以使用一些 LaTeX 语法),并生成任何这些文件类型。

和以前一样,首先声明文档的元信息(标题、作者和日期):

% Contract Agreement for Software X % Kiko Fernandez-Reyes % August 28th, 2018 然后在 Markdown 中编写文档(如果需要高级格式,则添加 LaTeX)。例如,创建一个固定间隔的表格(在 LaTeX 中用 \hspace{3cm} 声明)以及客户端和承包商应填写的行(在 LaTeX 中用 \hrulefill 声明)。之后,添加一个用 Markdown 编写的表格。

创建的文档如下所示:

Linux中如何使用Pandoc来转换文件

创建此文档的代码如下:

% Contract Agreement for Software X% Kiko Fernandez-Reyes% August 28th, 2018...### Work Order\begin{table}[h]\begin{tabular}{ccc}The Contractor & \hspace{3cm} & The Customer \\& & \\& & \\\hrulefill & \hspace{3cm} & \hrulefill \\%Name & \hspace{3cm} & Name \\& & \\& & \\\hrulefill & \hspace{3cm} & \hrulefill \\...\end{tabular}\end{table}\vspace{1cm}+--------------------------------------------|----------|-------------+| Type of Service                            | Cost     |     Total   |+:===========================================+=========:+:===========:+| Game Engine                                | 70.0     | 70.0        ||                                            |          |             |+--------------------------------------------|----------|-------------+|                                            |          |             |+--------------------------------------------|----------|-------------+| Extra: Comply with defined api functions   | 10.0     | 10.0        ||        and expected returned fORMat        |          |             |+--------------------------------------------|----------|-------------+|                                            |          |             |+--------------------------------------------|----------|-------------+| **Total Cost**                             |          | **80.0**    |+--------------------------------------------|----------|-------------+

要生成此文档所需的三种不同输出格式,编写如下的 Makefile:

DOCS=contract-agreement.mdall: $(DOCS)   pandoc -s $(DOCS) -o $(DOCS:md=pdf)   pandoc -s $(DOCS) -o $(DOCS:md=docx)   pandoc -s $(DOCS) -o $(DOCS:md=odt)clean:   rm *.pdf *.docx *.odt.PHONY: all clean

4 到 7 行是生成三种不同输出格式的具体命令:

如果有多个 Markdown 文件并想将它们合并到一个文档中,需要按照希望它们出现的顺序编写命令。例如,在撰写本文时,我创建了三个文档:一个介绍文档、三个示例和一些高级用法。以下命令告诉 Pandoc 按指定的顺序将这些文件合并在一起,并生成一个名为 document.pdf 的 PDF 文件。

pandoc -s introduction.md examples.md advanced-uses.md -o document.pdf

模板和元信息

编写复杂的文档并非易事,你需要遵循一系列独立于内容的规则,例如使用特定的模板、编写摘要、嵌入特定字体,甚至可能要声明关键字。所有这些都与内容无关:简单地说,它就是元信息。

Pandoc 使用模板生成不同的输出格式。例如,有一个 LaTeX 的模板,还有一个 ePub 的模板,等等。这些模板的元信息中有未赋值的变量。使用以下命令找出 Pandoc 模板中可用的元信息:

pandoc -D FORMAT

例如,LaTex 的模版是:

pandoc -D latex

按照以下格式输出:

$if(title)$\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}$endif$$if(subtitle)$\providecommand{\subtitle}[1]{}\subtitle{$subtitle$}$endif$$if(author)$\author{$for(author)$$author$$sep$ \and $endfor$}$endif$$if(institute)$\providecommand{\institute}[1]{}\institute{$for(institute)$$institute$$sep$ \and $endfor$}$endif$\date{$date$}$if(beamer)$$if(titlegraphic)$\titlegraphic{\includegraphics{$titlegraphic$}}$endif$$if(loGo)$\logo{\includegraphics{$logo$}}$endif$$endif$\begin{document}

如你所见,输出的内容中有标题、致谢、作者、副标题和机构模板变量(还有许多其他可用的变量)。可以使用 YAML 元区块轻松设置这些内容。 在下面例子的第 1-5 行中,我们声明了一个 YAML 元区块并设置了一些变量(使用上面合同协议的例子):

---title: Contract Agreement for Software Xauthor: Kiko Fernandez-Reyesdate: August 28th, 2018---(continue writing document as in the previous example)

这样做非常奏效,相当于以前的代码:

% Contract Agreement for Software X% Kiko Fernandez-Reyes% August 28th, 2018

然而,这样做将元信息与内容联系起来,也即 Pandoc 将始终使用此信息以新格式输出文件。如果你将要生成多种文件格式,最好要小心一点。例如,如果你需要以 ePub 和 HTML 的格式生成合同,并且 ePub 和 HTML 需要不同的样式规则,该怎么办?

考虑一下这些情况:

如果你只是尝试嵌入 YAML 变量 CSS:style-epub.css,那么将从 HTML 版本中移除该变量。这不起作用。 复制文档显然也不是一个好的解决方案,因为一个版本的更改不会与另一个版本同步。 你也可以像下面这样将变量添加到 Pandoc 命令中:

pandoc -s -V css=style-epub.css document.md document.epubpandoc -s -V css=style-html.css document.md document.html

我的观点是,这样做很容易从命令行忽略这些变量,特别是当你需要设置数十个变量时(这可能出现在编写复杂文档的情况中)。现在,如果将它们放在同一文件中(meta.yaml 文件),则只需更新或创建新的元信息文件即可生成所需的输出格式。然后你会编写这样的命令:

pandoc -s meta-pub.yaml document.md document.epubpandoc -s meta-html.yaml document.md document.html

这是一个更简洁的版本,你可以从单个文件更新所有元信息,而无需更新文档的内容。

看完了这篇文章,相信你对“Linux中如何使用Pandoc来转换文件”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网操作系统频道,感谢各位的阅读!

--结束END--

本文标题: Linux中如何使用Pandoc来转换文件

本文链接: https://lsjlt.com/news/313106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux中如何使用Pandoc来转换文件
    小编给大家分享一下Linux中如何使用Pandoc来转换文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Pandoc 是一个命令行工具,用于将文件从一种标记语言转换为另一种标记语言。标记语言使用标签来标记文档的各个部分。...
    99+
    2023-06-27
  • 怎么使用pandoc将Markdown转换为格式化文档
    小编给大家分享一下怎么使用pandoc将Markdown转换为格式化文档,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基本转换首先,在你的计算机上安装 pando...
    99+
    2023-06-16
  • Linux下文件编码如何转换
    这篇文章主要介绍了Linux下文件编码如何转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下文件编码如何转换文章都会有所收获,下面我们一起来看看吧。这是由于Windows中默认的文件格式是GBK(g...
    99+
    2023-06-27
  • windows中psd文件如何转换成ai文件
    本篇内容介绍了“windows中psd文件如何转换成ai文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-01-29
    windows
  • windows中esd文件如何转换成gho文件
    这篇“windows中esd文件如何转换成gho文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2023-02-16
    windows
  • 如何在Linux中使用PHP和Apache来处理文件?
    在Linux系统中,PHP和Apache是两个非常常见的开源软件。PHP是一种脚本语言,用于编写动态网页,而Apache则是一个流行的Web服务器软件。在本文中,我们将介绍如何在Linux中使用PHP和Apache来处理文件。 安装PHP和...
    99+
    2023-06-30
    apache 文件 linux
  • windows中DAT文件如何转换wps
    这篇文章主要讲解了“windows中DAT文件如何转换wps”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows中DAT文件如何转换wps”吧! ...
    99+
    2022-12-29
    windows dat文件 wps
  • windows中DAT文件如何转换DXF
    这篇文章主要介绍了windows中DAT文件如何转换DXF的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows中DAT文件如何转换DXF文章都会有所收获,下面我们一起来...
    99+
    2022-12-29
    windows dat文件 dxf
  • linux如何将一个文本文件转换成html
    ...
    99+
    2024-04-02
  • Linux下如何将文本文档转换成PDF文件
    这篇文章将为大家详细讲解有关Linux下如何将文本文档转换成PDF文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。现在有很多软件能够将文本文件转换成PDF文件,其实在Linux系统中,不用使用软件也能将...
    99+
    2023-06-27
  • html文件如何转换成jsp文件
    本文将为大家详细介绍“html文件如何转换成jsp文件”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“html文件如何转换成jsp文件”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去...
    99+
    2023-06-06
  • html文件如何转换成pdf文件
    转换方法:1、在线转换工具,如 pdfcrowd 和 online2pdf,无需安装即可快速将 html 文件转换成 pdf。2、浏览器插件,如 chrome 的 html 转 pdf ...
    99+
    2024-04-02
  • windows中eml文件如何转换成word
    这篇文章主要讲解了“windows中eml文件如何转换成word”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows中eml文件如何转换成word”吧!eml文件转换成word的方法...
    99+
    2023-07-05
  • windows中psd文件如何转换成jpg
    这篇文章主要讲解了“windows中psd文件如何转换成jpg”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows中psd文件如何转换成jpg”吧!...
    99+
    2023-02-16
    windows
  • windows中ofd文件如何转换格式
    这篇文章主要介绍“windows中ofd文件如何转换格式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows中ofd文件如何转换格式”文章能帮助大家解决问题。ofd文件转换格式:首先右击of...
    99+
    2023-07-02
  • windows中bin文件如何转换成dwg
    这篇文章主要介绍了windows中bin文件如何转换成dwg的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows中bin文件如何转换成dwg文章都会有所收获,下面我们一起来看看吧。bin文件转换成dwg...
    99+
    2023-07-02
  • windows中ceb文件如何转换成word
    本篇内容主要讲解“windows中ceb文件如何转换成word”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows中ceb文件如何转换成word”吧!ceb文件转换成word的教程首先,...
    99+
    2023-07-01
  • linux中的文件编码怎么转换
    本篇内容主要讲解“linux中的文件编码怎么转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中的文件编码怎么转换”吧! ...
    99+
    2023-05-25
    linux
  • golang如何转换中文
    Golang是一种高效的编程语言,可以用于各种领域的开发,包括中文转换。中文转换在很多应用场景中都是必不可少的,比如搜索引擎、机器学习等,本篇文章将介绍Golang中的中文转换方法。字符串转换在Golang中,字符串本身是以UTF-8编码的...
    99+
    2023-05-14
  • linux shell文件转码iconv命令如何使用
    这篇文章主要讲解了“linux shell文件转码iconv命令如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux shell文件转码iconv命令如何使用...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作