从错误目录(Python)中创建的latex代码生成的pdf文件

从错误目录(Python)中创建的latex代码生成的pdf文件,python,pdf,latex,Python,Pdf,Latex,我目前正在尝试编写一个程序,打开一个latex文件,生成一个同名的pdf文件,并将其保存在latex文件所在的文件夹中我的问题:pdf文件是在与我正在运行的程序的python文件相同的文件夹中创建的,而不是latex文件所在的文件夹中-我无法理解为什么会发生这种情况。我正试图分两步实现我的目标 首先,我使用一个函数,该函数获取latex文件的目录和标题,以便生成具有相同名称的pdf: def getName(self, somestring):

我目前正在尝试编写一个程序,打开一个latex文件,生成一个同名的pdf文件,并将其保存在latex文件所在的文件夹中
我的问题:pdf文件是在与我正在运行的程序的python文件相同的文件夹中创建的,而不是latex文件所在的文件夹中-我无法理解为什么会发生这种情况。我正试图分两步实现我的目标
首先,我使用一个函数,该函数获取latex文件的目录和标题,以便生成具有相同名称的pdf:

 def getName(self, somestring):                                                    

    if "/" in somestring:
        indexsofslash = [i for i, ltr in enumerate(somestring) if ltr == "/"]
        indexsofdot = [i for i, ltr in enumerate(somestring) if ltr == "."]
        lastindexslash = max(indexsofslash)
        lastindexdot = max(indexsofdot)
        mainName = somestring[lastindexslash + 1:lastindexdot]
        pdfDirectory = somestring[:lastindexslash + 1]
        someothername = pdfDirectory +  mainName
        newname = someothername
    else:
        newname = somestring 
    return newname
之后,我使用此函数生成pdf文件,使用:

def generate_pdf(self):

    name=self.getName(self.fl)      
    f = open('%s.tex'%name,'w')
    tex = self.txt.get(1.0,"end-1c")
    f.write(tex)
    f.close()
    proc=subprocess.Popen(['pdflatex','%s.tex'%name])
    proc.communicate()
    os.startfile('%s.pdf'%name)
    #os.unlink('%s.tex'%name)
    os.unlink('%s.log'%name)
    os.unlink('%s.aux'%name)
*注:打印名称时,显示latex文件的目录+文件标题,即H:/Public/Test/Test


发生了什么:pdf是在我正在运行的程序的python文件所在的文件夹中生成的,而不是在我的latex文件所在的文件夹中生成的-我做错了什么?

问题是默认情况下,
pdflatex
会将输出文件写入当前工作目录。要改变这种行为,你需要提供一个选项

查看
pdflatex
man
页面:

$ man pdflatex
然后搜索
-输出目录
,您将看到:

-输出目录
在目录而不是当前目录中写入输出文件。首先在目录中查找输入文件,沿着正常的搜索路径

因此,您需要将python代码修改为如下内容:

proc=subprocess.Popen(['pdflatex', '-output-directory', pdfDirectory, '%s.tex' % name])

假设
pdfDirectory
是您的目标。

所以我试着写这个:proc=subprocess.Popen(['pdflatex','%s.tex'%name',-output directory',pdfDirectory]),但它仍然没有更改目录。使用'-output directory'命令的正确方法是什么,因为我显然做得不对。pdfDirectory是latex文件的目录。好的,我已经更新了答案,您需要在输入
tex
之前添加选项。签出更新。工作正常。干杯