繁体   English   中英

由错误目录中创建的乳胶代码生成的pdf文件-Python

[英]A pdf file generated from latex code created in a wrong directory - Python

我目前正在尝试编写一个程序,该程序打开一个乳胶文件并生成一个具有相同名称的pdf,并将其保存在与乳胶文件相同的文件夹中。
我的问题:pdf文件与我正在运行的程序的python文件位于同一文件夹中,而不是乳胶文件所在的文件夹中-我无法理解为什么会这样。 我试图通过两个步骤来实现我的目标。
首先,我使用一个获取目录和乳胶文件标题的函数,以便可以生成具有相同名称的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)

*注意:打印名称时,它会显示乳胶文件的目录和文件标题,即H:/ Public / Test / test。

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

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

看看pdflatexman页:

$ man pdflatex

并搜索-output-directory ,您将看到:

-output-directory目录
将输出文件写入目录而不是当前目录中。 首先,在普通搜索路径中在目录中查找输入文件。

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

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

假设pdfDirectory是您的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM