列表中的“é”字符有问题

列表中的“é”字符有问题

我有这个平均能量损失

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{colortbl}
\usepackage{lmodern}
\usepackage{listings}
\usepackage{color}


\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3,
  extendedchars=true,
  postbreak=\space, breakindent=5pt, breaklines,
  literate={à}{{\`a}}1 {è}{{\`e}}1 {é}{{\'e}}1 {ê}{{\^e}}1 {ù}{{\`u}}1,
}


\begin{document}

 \begin{lstlisting}
  //...
  API api = new API(url);
  CultureIntermediaire cultureIntermediaire = resultat.getCultureIntermediaire();

  //On affiche le nom de la méthode de travail du sol la plus érosive

 \end{lstlisting}

\end{document}

结果 在此处输入图片描述

我有一个问题:“é”字符是单独的

有没有办法告诉列表在找到一个点而不仅仅是一个空格时换行。我想要得到这样的结果:

CultureIntermediaire cultureIntermediaire = resultat.
                                          getCultureIntermediaire();

答案1

对于句号处的换行符,您可以按照下列步骤操作:

literate= {.}{}{1\discretionary{.}{}{.}},

哪个行在.,但是效果不太好。要调整输出,请查看答案。答案的这一部分告诉你一些事情:literate是某种将 unicode 字符放入的 hack。另一个解决方案可能是转义为贡萨洛建议回答。

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3,
  extendedchars=true,
  postbreak=\space, breakindent=5pt, breaklines,
  escapeinside={\%*}{*)}, % I'm new here!
  literate= {.}{}{1\discretionary{.}{}{.}}, % So am I
}

\usepackage{listingsutf8}评论中所建议的那样埃格尔。然后你必须用以下内容替换你的评论

// %*On affiche le nom de la méthode de travail du sol la plus érosive!*)

这使得

在此处输入图片描述

PS 将代码放在单独的文件中,然后将其添加到列表中是一种很好的做法lstinputlisting。这不仅使项目更易于组织,而且还避免了一些与列表相关的麻烦。(例如,检查回答以了解如何使用该命令)。

答案2

起初我以为评论就够了,但我觉得这值得回答。因为这是我很晚才学到的东西(几周前)。

listings如果你使用 作为输入编码,则更加友好latin1。例如,重音符号无需 即可工作literate,即开箱即用(并且不间断空格)。

可能出现什么问题?我不知道。有什么缺点/优点latin1?我不知道。如果您知道,请随意编辑。

记得节省带有编码的文档latin1

\documentclass[a4paper,12pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{colortbl}
\usepackage{lmodern}
\usepackage{listings}
\usepackage{color}

\lstset%
 {frame = tb,
  language = Java,
  aboveskip = 3mm,
  belowskip = 3mm,
  showstringspaces = false,
  columns = flexible,
  basicstyle = {\small\ttfamily},
  numbers = none,
  breaklines = true,
  breakatwhitespace = true,
  tabsize = 3,
  extendedchars = true,
  postbreak = \space, breakindent = 5pt, breaklines,}

\begin{document}

\begin{lstlisting}
 //...
 API api = new API(url);
 CultureIntermediaire cultureIntermediaire = resultat.getCultureIntermediaire();

 //On affiche le nom de la méthode de travail du sol la plus érosive
\end{lstlisting}

\end{document}

正如@Pouya 所评论的那样,特别是法语(例如,œ,æ)没有得到完全支持(这里是维基百科文章)。但是,似乎latin9(ISO-8859-15) 完全支持它,因此您可能需要使用它。它会更好吗?同样,我不知道。如果有一个关于不同编码的优缺点的完整参考就太好了。

相关内容