使 Windows 上的 MiKteX pdflatex 可供 cygwin 使用

使 Windows 上的 MiKteX pdflatex 可供 cygwin 使用

我目前有一个项目,其工作流程使用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

相关内容