疑虑

疑虑

设想

我正在 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'])

我尝试时遇到的问题是:

  1. 第一次尝试时我没有通过辩论-enable-installer
  2. 在包含参数的尝试中-enable-installer,我还将命令从列表格式(每个列表元素一个参数)重写为单个列表元素中的所有参数。即使-enable-installer包含了命令,这也会产生无效命令。我没有注意到这个错误,因为我忘记在尝试之前放置了一个命令,这产生了一个错误,我将其归因于尝试。

疑虑

  1. 我不确定这个命令是否使用安装在我的电脑上的乳胶还是我在 Anaconda 中安装的乳胶。
  2. 我还不知道如何按照评论中的建议在 anaconda 中安装包含所有包的 latex 命令。

相关内容