我目前有一个项目,其工作流程使用pandoc
在其 Makefile 中将文本从 Markdown 转换为 LaTeX 再转换为 PDF。这要求我的路径中存在 LaTeX 引擎,或者使用选项指定--latex-engine
。我的其余开发工作都在cygwin64
在 64 位 Windows 7 上。
不知何故,我以前安装过微特克斯,但我对每次编译都会收到两个用户帐户控制 (UAC) 提示感到恼火,大概是因为 MiKTeX 检查了缺少的软件包。在使用“64 位网络安装程序”完全重新安装 MiKTeX 2.9 并包含所有软件包后,现在当我运行以下 Makefile(从原始文件精简)时:
PANDOC= pandoc
PDFLATEX= /usr/bin/pdflatex
pdf: main.tex
$(PANDOC) main.tex -o main.pdf --latex-engine="$(PDFLATEX)"
...我收到以下错误:
pandoc.exe: /usr/bin/pdflatex not found. /usr/bin/pdflatex is needed for pdf output.
Makefile:4: recipe for target 'pdf' failed
make: *** [pdf] Error 41
我已经确认了/usr/bin/pdflatex
做确实存在,作为指向同一目录中的符号链接pdftex.exe
。将符号链接放在其位置/cygdrive/c/Program Files/MiKTeX 2.9/miktex/bin/x64/pdflatex.exe
(相关 MiKTeX 二进制文件所在的位置)没有帮助。 我在这里遗漏了什么?
值得注意的是,pandoc main.tex -o main.pdf
从 Windows 命令行运行似乎工作得很好,并且不会出现 UAC 提示。理想情况下,我希望有一个解决方案,让我可以轻松地从 Windows 或 cygwin 命令行运行相同的安装,但能够从 cygwin 运行它是一种必须对于我的工作流程(IE,答案大致是“为什么还要费心使用 cygwin?“在这里是不可接受的)。看来确实应该有一种简单的方法让 cygwin 可以使用此安装。
答案1
在 cygwin 下,以下命令对我有用。我安装了 pandoc 1.13.2 和 MiKTeX 2.9.5105 64 位。然后我运行:
pandoc -s \
--latex-engine='C:\Program Files\MiKTeX 2.9\miktex\bin\x64\pdflatex.exe' \
-f markdown_github -t latex \
"my-file.md" -o "my-file.pdf"
这里的关键是我在 --latex-engine 键中给出了 MiKText 的 pdflatex.exe 的完整路径(用引号引起来),使用 Windows 路径(因为我安装的 pandoc 是 Windows pandoc,所以它需要 Windows 样式的路径来查找资源)。
由于 my-file.md 的文件格式,我使用了 -f markdown_github
我使用了 -t latex 但据我所知这是可选的。
答案2
谢谢Ulrike Fischer 的评论之后,我意识到尝试让基于 Windows 的 MiKTeX 安装与基于 cygwin 的pandoc
安装顺利配合是愚蠢的行为。 最好将这些东西分开。
因此,texlive
安装在 cygwin 中,我得到了一个更简单的解决方案:
PANDOC= pandoc
pdf: main.tex
$(PANDOC) main.tex -o main.pdf
答案3
避免在 cygwin 中运行的 miktex 上使用 pdftex 和 pdflatex 命令,请使用“texify”
前任。
texify --pdf --tex-option=--interaction=errorstopmode --tex-option=--synctex=-1