使用列表后的编码问题

使用列表后的编码问题

我正在尝试在文档中插入一些代码,并使用软件包列表。我很清楚插入特殊的 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}

相关内容