Latex:列表不能正确替换特殊字符

2024-06-16 13:36:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在文档中包含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,所以编译时会出现错误


Tags: 代码脚本false选项utf8字符smalllistings
1条回答
网友
1楼 · 发布于 2024-06-16 13:36:33

好的,所以我已经成功了。我仍然不知道为什么会发生这种情况,因为我见过其他人也有同样的问题,他们可以用不适合我的方法来解决。如果有人发现自己处于同样的情况,以下是对我有效的方法:

\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
} 

选项,但对我来说,它产生了相同的结果。这同样适用于任何其他组合的软件包和设置,我不知道为什么。祝你好运

相关问题 更多 >