使用外部 Python 函数结果时出现的问题

使用外部 Python 函数结果时出现的问题

我正在尝试在我的 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,然后重新编译。

相关内容