我正在尝试在我的 tex 文档中实现一个 python 函数(它为我处理文本)。因此我开始如下操作:
Tex:
%& -shell-escape
\documentclass{article}
\usepackage{pythontex}
\usepackage{lettrine}
\newcommand{\printPython}[1]{
\pyc{print(r'Hello #1')}%
}
\begin{document}
Say hello Python:
%\begin{python}%
%print r"Hello \LaTeX!"
%\end{python}%
\printPython{Test}
\begin{pycode}
from BigLet import *
a = modifyText("Hallo Welt")
print(r"\textit{\py{modifyText("HalloWelt")}}")
print(r"\newline")
print(r"\centering")
print(r"\textit{A message from Python!}")
\end{pycode}
\end{document}
BigLet.py
:
from __future__ import division
def modifyText(inputstring):
wordlist = inputstring.split(' ')
chordItem = '\\'
if chordItem not in wordlist[0]:
firstWord = wordlist[0]
firstLetter = firstWord[0]
modWord = "\lettrine{"+firstLetter+"}{"+firstWord[1:]+'}'
fullText = modWord + ' ' + inputstring[len(firstWord):]
return fullText
else:
firstWord = wordlist[1]
print firstWord
firstLetter = firstWord[0]
modWord = "\lettrine{"+firstLetter+"}{"+firstWord[1:]+'}'
fullText = inputstring[:len(wordlist[0])] + ' ' + modWord + ' ' + inputstring[len(wordlist[0]) + len(firstWord):]
return fullText
a
我现在的问题是,我既不能访问(字符串)的值,也不能使用 行print(r"\textit{\py{modifyText("HalloWelt")}}")
。使用 行时,我收到错误
print(r"\textit{\py{modifyText("HalloWelt")}}")
^
SyntaxError: invalid syntax
a
当我使用打印时print(r"\textit{a}")
,我只得到字母a
。当将该行更改为 时print(r"\textit{\py{a}}")
,我得到两个问号。我如何从外部函数访问结果字符串并将其传递下去?只需打印即可。
答案1
print(r"\textit{\py{modifyText("HalloWelt")}}")
出现语法错误,因为你试图在双引号分隔的字符串中包含未转义的文字双引号。你需要类似print(r'\textit{\py{modifyText("HalloWelt")}}')
print(r"\textit{a}")
正在打印一个字符串,因此您只需获取该字符串。
您可能想要类似print(r"\textit{" + a + "}")
或 之类的东西print(r"\textit{{{a}}}".format(a=a))
。或者您可以避免使用临时变量并使用print(r"\textit{" + modifyText("Hallo Welt") + "}")
几乎没有\py{...}
真正需要打印的情况。通常,您只需组装最终文本,然后打印即可。
如果出现两个问号,则表明您需要再次运行 PythonTeX,然后重新编译。