Luí*_*usa 5 package-management pandoc 20.04
我正在使用pandoc将 LaTeX 文档转换为 Word 格式。源文档包含需要保留在输出中的各种交叉引用。但是,当使用交叉引用过滤器时,pandoc会抱怨它未安装:
$ pandoc main.tex --filter pandoc-crossref -o main.docx
Error running filter pandoc-crossref:
Could not find executable pandoc-crossref
Run Code Online (Sandbox Code Playgroud)
安装了带有过滤器 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
Run Code Online (Sandbox Code Playgroud)
所以我假设过滤器包含在通用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
$
Run Code Online (Sandbox Code Playgroud)
难道这个过滤器根本就没有包装好,需要手动安装吗?或者有其他方法可以在 Ubuntu 上使用它吗?
该过滤器无法从 PPA 或任何其他包装资源获得。因此,最安全的选择是在系统中编译过滤器,正如 N0rbert 所建议的那样。但是,过滤器存储库中的编译说明不适用于 Ubuntu。这些指令期望系统拥有最先进的软件,而在 Ubuntu 提供的打包软件生态系统中通常情况并非如此。以下是让它在我的系统上运行的说明。
要编译,pandoc-crossref您必须安装haskell-stack编译过滤器的工具链。
sudo aptitude install haskell-stack
Run Code Online (Sandbox Code Playgroud)
这是第一个棘手的地方。Universe 提供的软件包haskell-stack确实很旧,可以追溯到 2018 年,这意味着它实际上能做的事情并不多。幸运的是,该程序可以自我更新,运行以下命令:
stack upgrade --binary-only
Run Code Online (Sandbox Code Playgroud)
现在可以克隆源代码了。但必须获得正确的版本,最新的版本编译失败。这是因为pandocUniverse 中的包也是旧的,从 2019 年开始,因此必须检查匹配的版本:
cd git
git clone https://github.com/lierdakil/pandoc-crossref.git
cd pandoc-crossref
git checkout v0.3.4.2
Run Code Online (Sandbox Code Playgroud)
最后可以编译过滤器:
stack install
Run Code Online (Sandbox Code Playgroud)
这将安装已编译的过滤器,${HOME}/.local/bin在我的情况下就可以了。
这个方法是在这个线程中弄清楚的。
| 归档时间: |
|
| 查看次数: |
3420 次 |
| 最近记录: |