我有一个Pandoc(v1.19.2.1)HTML5模板,我是从默认的--data-dir
加载的。在模板中,我需要加载外部资源,例如样式表和JavaScript。我想加载相对于模板路径的那些资源,不工作目录或源文件。例如,在macOS上,~/.pandoc/templates/hierarchical/hierarchical.html
:
…
<link rel="stylesheet" href="hierarchical.css">
…
其中hierarchical.css
位于~/.pandoc/templates/hierarchical/hierarchical.css
,与模板本身位于同一目录中。
然后从命令行调用:
pandoc \
--from=markdown_strict+header_attributes+yaml_metadata_block+pipe_tables\
--to=html5 \
--self-contained \
--template="hierarchical/template.html" \
--section-divs \
--output="$1.html" \
--toc \
--toc-depth=6 \
"$1.md"
我收到错误:
pandoc: Could not fetch hierarchical.css
hierarchical.css: openBinaryFile: does not exist (No such file or directory)
我已经尝试了各种其他相对路径的CSS文件。唯一有效的是绝对路径/Users/jmakeig/.pandoc/templates/hierarchical/hierarchical.css
,当然,它只适用于我的笔记本电脑。
有没有办法解决Pandoc模板中相对于模板本身的外部资源,以便模板可移植?我没有看到一个明显的外部变量,我可以在我的模板或命令行选项中使用。
答案 0 :(得分:0)
我要粘贴我刚才created in github遇到的问题的解决方法。
在创建此问题两年多之后,回到该主题,我发现了一个不太坏的解决方法。
显然,latex使用环境变量TEXINPUTS
作为资源的排序路径。因此,您只需在系统(Linux,Windows,无论在哪里)中配置一次环境变量,然后仅引用与该路径相关的资源即可。
此链接提供了有关如何使用它的一些说明: https://tex.stackexchange.com/questions/93712/definition-of-the-texinputs-variable
例如,我有以下文件:
SOME_PATH_TO/templates/my_latex_template.tex
SOME_PATH_TO/templates/img/my_img.png
在我的系统中,我设置了环境变量(以Windows为例,尽管我实际上只是将其保存在系统配置下)
set TEXINPUTS=SOME_PATH_TO/templates/
在模板my_latex_template.tex
中,我有类似的内容:
%...
\includegraphics{img/my_img.png}
%...
我这样称呼模板:
pandoc file.txt -t pdf --template=SOME_PATH_TO/templates/my_latex_template.tex --output=output.pdf