![LaTeX 中的 Python 代码无法运行](https://linux22.com/image/276722/LaTeX%20%E4%B8%AD%E7%9A%84%20Python%20%E4%BB%A3%E7%A0%81%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C.png)
Latex/Python 项目:
在 Latex 中根据文件夹中的 pdf 文件创建一本歌本并制作目录。
问题:
以下代码无法在 Latex 中运行。感谢 G.Poore,我添加了 \verb 命令来解决下划线等问题。但仍然不起作用。我认为问题在于:
- Latex 以某种方式消除了压痕
- 可能还存在一些其他编码错误,由于 1. 我无法测试。(抱歉......)
usepackage python 与 pythontex:
我使用 python 是因为
- 运行一个文件比运行 latex/python/latex 更容易
- 由于某些原因,pythontex 无法在我的 Mac 上运行,但是没问题,请参阅 1。
有人能给我一些提示吗?谢谢!
% !TEX program = XeLaTeX+shell-escape
\documentclass{article}
\usepackage{hyperref}
\usepackage{python}
\usepackage[final]{pdfpages}
\usepackage[ngerman]{babel}
\begin{document}
\begin{python}
import os
from Tkinter import Tk
from tkFileDialog import askdirectory
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
# show an "Open" dialog box and return the path to the selected file
Liederpfad = askdirectory(title="Choose folder:")
# get filenames from path
v5 = os.listdir(Liederpfad)
# remove "symlink" if there
for name in v5:
if name.endswith("symlink"):
os.rename(Liederpfad + "/" + name, Liederpfad + "/" + name[:-8])
# write latex code
for x in v5:
if not x.startswith("."): #versteckte Systemdateien ausblenden
print ('\\phantomsection')
if x.endswith("symlink"):
print ('\\addcontentsline{toc}{section}{\\verb|' + x[:-12] + '|}\n')
else:
print ('\\addcontentsline{toc}{section}{\\verb|' + x[:-4] + '|}\n')
print ('\\includepdf[fitpaper=true,pages=-,pagecommand={\\thispagestyle{fancy}}]{\\verb|' + Liederpfad + '/' + x + '|}\n)
print ('')
\end{python}
\tableofcontents
\end{document}
答案1
在您的简短示例中,您尝试打印文件名。但一般来说,文件名不是有效的 LaTeX,因为它们可能包含下划线等。如果您执行类似以下操作
print('\\verb|' + name + '|\n')
那么文件名将被包装在\verb
命令中,因此特殊字符不会成为问题。
此外,您不需要%
后续python
环境。
根据你最终想要做的事情,你可能希望考虑pythontex
软件包。它提供了很多附加功能,但还涉及三步编译过程(LaTeX,,pythontex.py
然后再次使用 LaTeX)