乳胶:列表无法正确替换特殊字符

时间:2020-09-04 18:17:13

标签: python latex listings

我想在文档中包含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文件:

pdf I get

在识字选项中所有特殊字符都替换为最后一个。

为什么会这样?

编辑

使用软件包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,所以它给了我编译错误。

1 个答案:

答案 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
} 

选项,但对我来说却产生了相同的结果。其他软件包和设置的组合也一样,我不确定为什么。祝你好运!

相关问题