我正在尝试在文档中插入一些代码,并使用软件包列表。我很清楚插入特殊的 utf8 字符需要采取一些预防措施,可以使用 \lstset 和 literate 参数进行设置。
它可以工作,除了代码块后面的“常规”文本。我还尝试使用 listingsutf8、inline 或 \lstinputlisting。它仍然失败。
这是一个最小的例子。
\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8x]{inputenc}
\usepackage[francais]{babel}
\usepackage{listings}
\lstset{language=c++,
keywordstyle=\bf,
frame=single,
numbers=left,
tabsize=2,
inputencoding=utf8,
extendedchars=true,
literate={é}{{\'{e}}}1
}
\begin{document}
Accentué %works fine : document in utf8
\begin{lstlisting}code working fine
int i = 2; //accentué
\end{lstlisting}
Accentué %fails (if this line is removed, the code compiles)
\end{document}
我怎样才能避免这种情况?
答案1
问题在于utfx8
编码,这有很多问题。对于法语,使用 就足够了utf8
。顺便说一句,该babel
选项现在称为french
,而不是francais
,它可能很快就会消失。
\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{listings}
\lstset{language=c++,
keywordstyle=\bf,
frame=single,
numbers=left,
tabsize=2,
inputencoding=utf8,
extendedchars=true,
literate={é}{{\'{e}}}1
}
\begin{document}
Accentué
\begin{lstlisting}
code working fine
int i = 2; //accentué
\end{lstlisting}
Accentué
\end{document}