在 Ubuntu 20.04 上使用 pandoc-crossref

在 Ubuntu 20.04 上使用 pandoc-crossref

我正在使用pandoc它将 LaTeX 文档转换为 Word 格式。源文档包含需要在输出中保留的各种交叉引用。但是,当使用交叉引用过滤器时,pandoc会抱怨它未安装:

$ pandoc main.tex --filter pandoc-crossref -o main.docx
Error running filter pandoc-crossref:
Could not find executable pandoc-crossref

安装了带有过滤器的 Python 绑定的包:

$ dpkg -l |  grep pandoc
ii  pandoc                                        2.5-3build2                                         amd64        general markup converter
ii  pandoc-data                                   2.5-3build2                                         all          general markup converter - data files
ii  python3-pandocfilters                         1.4.2-2                                             all          python3 bindings for Pandoc's filters

因此,我认为过滤器包含在通用pandoc包中。交叉引用过滤器可能不知为何缺失。

但没有其他可用的过滤包:

$ aptitude search pandoc | grep filter
p  pandoc-plantuml-filter - Pandoc filter: converts PlantUML code blocks to PlantUML images
i A python3-pandocfilters - python3 bindings for Pandoc's filters
$ aptitude search pandoc | grep cross
$

这个过滤器是不是没有打包,需要手动安装?或者在 Ubuntu 上还有其他使用它的方法吗?

答案1

该过滤器未打包为标准 Ubuntu 包。

提到https://github.com/jgm/pandoc/wiki/Pandoc-Filters,因此您可以从https://github.com/lierdakil/pandoc-crossref手动。

为了获得可重现的结果,您必须使用以下命令获取最新的pandocpandoc-crossref预编译的二进制文件:

cd ~/Downloads
wget -c https://github.com/jgm/pandoc/releases/download/2.13/pandoc-2.13-1-amd64.deb
sudo apt-get install ./pandoc-2.13-1-amd64.deb
sudo apt-get autopurge pandoc-data

wget -c https://github.com/lierdakil/pandoc-crossref/releases/download/v0.3.10.0a/pandoc-crossref-Linux.tar.xz
tar -xf pandoc-crossref-Linux.tar.xz
sudo mv pandoc-crossref /usr/local/bin/
sudo chmod a+x /usr/local/bin/pandoc-crossref
sudo mkdir -p /usr/local/man/man1
sudo mv pandoc-crossref.1  /usr/local/man/man1

请注意,这man pandoc-crossref将起作用。

pandoc main.tex --filter pandoc-crossref -o main.docx然后按照您已经计划的方式进行测试。


但为了获得更高效的结果,我建议开始使用预订(RMarkdown Markdown 扩展),它将以简化的形式为您完成所有工作。在这里,您可以拥有统一的 Rmd 输入格式和多种输出格式,包括 TeX、PDF、ePub、HTML、docx、odt 等。检查https://github.com/rstudio/bookdown-demo存储库作为起点。

答案2

此过滤器无法从 PPA 或任何其他包装资源中获取。因此,最安全的选择是在系统中编译过滤器,正如 N0rbert 所建议的那样。 然而,编译说明过滤器存储库中的说明不适用于 Ubuntu。这些说明要求系统具有最先进的软件,而 Ubuntu 提供的软件包生态系统通常并非如此。以下是在我的系统上运行它的说明。

要进行编译,pandoc-crossref您必须安装haskell-stack编译过滤器的工具链。

sudo aptitude install haskell-stack

这是第一个棘手的部分。Universehaskell-stack提供的软件包非常老旧,可以追溯到 2018 年,这意味着它实际上能做的事情不多。幸运的是,该程序可以自行更新,运行以下命令:

stack upgrade --binary-only

现在可以克隆源代码了。但是,必须获取正确的版本,使用最新版本编译会失败。这是因为pandocUniverse 中的包也很旧,是 2019 年的,因此必须签出匹配的版本:

cd git
git clone https://github.com/lierdakil/pandoc-crossref.git
cd pandoc-crossref
git checkout v0.3.4.2

最后可以编译过滤器:

stack install

这将安装已编译的过滤器,对${HOME}/.local/bin我来说这就够了。

这种方法是在此主题

相关内容