设想
我正在 Windows 10 Pro N 设备上的 Anaconda 4.8.2 中从 python 3.6 编译 latex 文档。为此,我在 Anaconda Prompt 中创建了一个 python 3.6 环境,并使用命令在 anaconda 中安装了 miktex:
conda install -c conda-forge miktex
并使用以下 Python 代码执行self.create_pdf('test/main.tex','test/main.pdf')
:
def create_pdf(self, input_filename, output_filename):
process = subprocess.Popen([
'latex', # Or maybe 'C:\\Program Files\\MikTex\\miktex\\bin\\latex.exe
'-output-format=pdf',
'-job-name=' + output_filename,
input_filename])
process.wait()
有问题的 latex 使用了 包\usepackage{qrcode}
。这导致 python 脚本手动提示安装包的权限,如下图所示。
问题
我怎样才能通过自动安装所有必需的软件包来静默编译 latex?
尝试
根据latex --help
文档,我尝试以管理员身份运行 Anaconda 提示符并传递-enable-installer
。我验证了手动命令latex -output-format=pdf -job-name="test/main.pdf" "test/main.tex" -enable-installer
跳过了权限请求。因此,我尝试在最后使用代码传递 -enable-installer:
def create_pdf(self, input_filename, output_filename):
string = f'latex -output-format=pdf -job-name="{input_filename}" "{output_filename}" -enable-installer'
process = subprocess.Popen([string])
process.wait()
即使在 cmd 中复制粘贴字符串没有提示,它仍然会提示权限。
答案1
感谢 Teepeemm 的评论,找到了以下形式的解决方案:
def create_pdfV2(self, input_filename, output_filename):
process = subprocess.Popen([
'latex', # Or maybe 'C:\\Program Files\\MikTex\\miktex\\bin\\latex.exe
'-output-format=pdf',
'-job-name=' + output_filename,
input_filename,
'-enable-installer'])
我尝试时遇到的问题是:
- 第一次尝试时我没有通过辩论
-enable-installer
。 - 在包含参数的尝试中
-enable-installer
,我还将命令从列表格式(每个列表元素一个参数)重写为单个列表元素中的所有参数。即使-enable-installer
包含了命令,这也会产生无效命令。我没有注意到这个错误,因为我忘记在尝试之前放置了一个命令,这产生了一个错误,我将其归因于尝试。
疑虑
- 我不确定这个命令是否使用安装在我的电脑上的乳胶还是我在 Anaconda 中安装的乳胶。
- 我还不知道如何按照评论中的建议在 anaconda 中安装包含所有包的 latex 命令。