如何打印名称中带有下划线的变量?

如何打印名称中带有下划线的变量?

这段代码运行完美:

% arara: pdflatex: { shell : yes }
% arara: pythontex
% arara: pdflatex: { shell : yes }
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{provapd.txt}
user_id|age
1|20
2|25
3|30
4|35
\end{filecontents*}
\usepackage{pythontex}
\begin{document}
    prova pandas

\begin{pycode} 
import pandas as pd
users = pd.read_table(r'provapd.txt', 
                      sep='|', index_col='user_id')
print(users.age.mean())
#print(users.head(3))
\end{pycode}
\end{document}

但如果我取消注释,print(users.head(3))我会收到此错误:

! Emergency stop.
<inserted text> 
                $
l.3 user_
         id
End of file on the terminal!

纯 Python 中的结果是:

27.5
         age
user_id
1         20
2         25
3         30

我如何管理带有下划线的变量名pythontex

答案1

我懂了:

% arara: pdflatex: { shell : yes }
% arara: pythontex
% arara: pdflatex: { shell : yes }
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{provapd.txt}
user_id|age
1|20
2|25
3|30
4|35
\end{filecontents*}
\usepackage{pythontex}
\begin{document}
    prova pandas

\begin{pycode} 
import pandas as pd
users = pd.read_table(r'provapd.txt', 
                      sep='|', index_col='user_id')
print(users.age.mean())
print('\n\n')
s=str(users.head(3))
s = s.replace('_','\_').replace('\n','\n\n')
print(s)
\end{pycode}
\end{document}

遗憾的是,我不知道如何将输出放在这里。我在其中添加了双换行符以分隔平均值和数据框内容,将输出转换为其字符串表示形式并将其作为简单字符串使用,替换所有必要的内容。遗憾的是,这导致 ID 和年龄用换行符分隔(这很奇怪)。

无论如何,这种方法可以随时使用,您可以通过将字符串替换为 LaTeX 表格环境的形式,将 pandas 数据框的输出转换为 LaTeX 表...

编辑:现在它工作得很好:

% arara: pdflatex: { shell : yes }
% arara: pythontex
% arara: pdflatex: { shell : yes }
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{provapd.txt}
user_id|age
1|20
2|25
3|30
4|35
\end{filecontents*}
\usepackage{pythontex}
\begin{document}
    prova pandas

\begin{pycode} 
import pandas as pd
users = pd.read_table(r'provapd.txt', 
                      sep='|', index_col='user_id')
print(users.age.mean())
print('\n\n')
s=str(users.head(3))
s = s.replace('_','\_').replace('\n',' ',1).replace('\n','\n\n')
print(s)
\end{pycode}
\end{document}

注意第一个替换 - string.replace 函数采用可选的 thirst 参数,即“count” - 应执行多少次替换。在这种情况下,您只需要一次(第一次)。

答案2

打印命令将被打印,并且与 LaTeX 中一样,下划线将会出现错误。

您可以通过将 autoprint 变量设置为 false 来抑制直接打印,然后使用\stdoutpythontex\printpythontex在代码块后打印。

在当前的 latex 中,不再需要 filecontents 包。

\documentclass{article}
\begin{filecontents*}[overwrite]{provapd.txt}
user_id|age
1|20
2|25
3|30
4|35
\end{filecontents*}
\usepackage{pythontex}
\begin{document}
    prova pandas

\setpythontexautoprint{false}
\begin{pycode}
import pandas as pd
users = pd.read_table(r'provapd.txt',
                      sep='|', index_col='user_id')
print(users.age.mean())
print(users.head(3)) 
\end{pycode}

STDOUT
\stdoutpythontex[verbatim]

PRINT
\printpythontex[verbatim]

\end{document}

在此处输入图片描述

相关内容