我目前正在尝试编写一个程序,该程序打开一个乳胶文件并生成一个具有相同名称的pdf,并将其保存在与latex文件相同的文件夹中。
我的问题:pdf文件创建在与我正在运行的程序的python文件相同的文件夹中,而不是乳胶文件所在的文件夹中 - 我无法理解为什么这是发生。我试图通过两个步骤实现我的目标。
首先,我使用一个函数来获取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)
*注意:当打印名称时,它会显示乳胶文件的目录+文件的标题,即H:/ Public / Test / test。
会发生什么:在我正在运行的程序的python文件所在的文件夹中生成pdf,而不是在我的latex文件所在的文件夹中 - 我做错了什么?
答案 0 :(得分:2)
问题是默认情况下pdflatex
将输出文件写入当前工作目录。要改变这种行为,你需要提供一个选项。
查看man
的{{1}}页面:
pdflatex
并搜索$ man pdflatex
,您会看到:
-output-directory directory
将输出文件写入目录而不是当前目录。首先在正常的搜索路径中查找目录中的输入文件。
因此,您需要将python代码修改为:
-output-directory
假设proc=subprocess.Popen(['pdflatex', '-output-directory', pdfDirectory, '%s.tex' % name])
是你的排名。