我想在文档中包含python脚本,但是在这些脚本中,我使用了áéíóú等字符。我正在使用\lstet
的识字选项。这是示例代码:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish,es-tabla]{babel}
\usepackage{listings, pythonhighlight}
\lstset{
basicstyle=\ttfamily\small,
breakatwhitespace=false,
breaklines=true,
inputencoding=utf8,
extendedchars=false,
literate= {á}{{\'a}}1
{é}{{\'e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{ú}{{\'u}}1
}
\begin{document}
\lstinputlisting[language=Python]{example.py}
\end{document}
使用包含以下内容的python脚本(example.py)
# coding = utf-8
# á é í ó ú
我得到这样的pdf文件:
在识字选项中所有特殊字符都替换为最后一个。
为什么会这样?
编辑
使用软件包listingsutf8
代替listings
,
basicstyle=\ttfamily\small,
breakatwhitespace=false,
breaklines=true,
inputencoding=utf8,
extendedchars=false,
literate= {á}{{\'a}}1
{é}{{\'e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{ú}{{\'u}}1
}
不更改任何内容。
将listingsutf8
用于:
\lstset{ ...
inputencoding=utf8/latin1,
...
}
允许我需要使用所有特殊字符,但放错了位置(所有字符都出现在python注释的开头,而不是它们应位于句子中的位置)。
将listingsutf8
与:
\lstset{ ...
inputencoding=latin1,
...
}
也不起作用,因为我的代码是utf8,所以它给了我编译错误。
答案 0 :(得分:0)
好的,所以我设法使它起作用。我仍然不知道为什么会这样,因为我看到其他人也遇到了同样的问题,可以用对我不起作用的方法解决它。如果有人发现自己处在相同的情况下,那么这对我有用:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{listingsutf8, pythonhighlight}
\lstset{
basicstyle=\ttfamily\small,
breakatwhitespace=false,
breaklines=true,
inputencoding=utf8/latin1,
extendedchars=true,
literate= {á}{{\'a}}1
{é}{{\'e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{ú}{{\'u}}1
}
\begin{document}
\lstinputlisting[language=Python]{Programas/data_bindings_RF.py}
\end{document}
请注意, 没有 的任何其他组合都对我有用。我见过有人通过将\usepackage{listingsutf8}
软件包和
\lstset{
literate= {á}{{\'a}}1
{é}{{\'e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{ú}{{\'u}}1
}
选项,但对我来说却产生了相同的结果。其他软件包和设置的组合也一样,我不确定为什么。祝你好运!