【问题标题】:Listings in Latex with UTF-8 (or at least german umlauts)带有 UTF-8 的 Latex 列表(或至少是德语变音符号)
【发布时间】:2010-11-10 02:49:24
【问题描述】:

尝试使用 Listings 包将源文件包含到我的乳胶文档中,我在代码中的 cmets 中遇到了德语变音符号的问题。 使用

\lstset{
extendedchars=\true,
inputencoding=utf8x
}

源文件中的元音变音(以 UTF-8 编码,没有 BOM)被处理,但它们以某种方式移动到它们所在单词的开头。 所以

// die Größe muss berücksichtigt werden

在输入源文件中,变为

// die ößGre muss übercksichtigt werden

在输出文件中。

注意:由于我在初始设置中发现错误,因此我对这个问题进行了大量编辑

【问题讨论】:

  • 您在文档中声明了什么输入编码,您在编辑器中使用了什么编码?
  • 我在法语方面也遇到了同样的问题。 IMO,您应该尝试使用非多字节编码,例如 Latin-1。
  • 西里尔字母的类似问题。使用一字节编码解决了这个问题。

标签: encoding latex utf-8 diacritics listings


【解决方案1】:

我对西班牙语的贡献。

经过测试,效果很好,既可以导入带有西班牙字符代码的文件,也可以将sn-ps的代码直接粘贴到latex文档中。

\usepackage[spanish, activeacute]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}

\lstset{literate=%
    {ñ}{{\~n}}1
    {Ñ}{{\~N}}1
    {á}{{\'a}}1
    {é}{{\'e}}1
    {í}{{\'i}}1
    {ó}{{\'o}}1
    {ú}{{\'u}}1
    {Á}{{\'A}}1
    {É}{{\'E}}1
    {Í}{{\'I}}1
    {Ó}{{\'O}}1
    {Ú}{{\'U}}1
}

【讨论】:

    【解决方案2】:

    这也适用于其他语言(西班牙语、丹麦语):

    \documentclass[
    a4paper, %% defines the paper size: a4paper (default), a5paper, letterpaper, ...
    12pt %% set default font size to 12 point
    ]{scrartcl} %% article, see KOMA documentation (scrguide.dvi)
    
    \usepackage[utf8]{inputenc}
    
    \usepackage[T1]{fontenc}
    \usepackage{listings}
    
    \lstset{language=Pascal}
    \lstset{literate=%
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}2
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {ö}{{\"o}}1
    }
    
    \begin{document}
    
    [Latex: kann man Umlaute in lstlisting verwenden?]
    \begin{lstlisting}
    Test für Umlaut äöü ÄÖÜ ß So geht es
    \end{lstlisting}
    
    \end{document} 
    

    【讨论】:

    • 谢谢 - 它成功了!波兰语也是如此: \lstset{literate={ą}{{\k{a}}}1 {ł}{{\l{}}}1 {ń}{{\'n}}1 {ę} {{\k{e}}}1 {ś}{{\'s}}1 {ż}{{\.z}}1 {ó}{{\'o}}1 {ź}{{\' z}}1 {Ą}{{\k{A}}}1 {Ł}{{\L{}}}1 {Ń}{{\'N}}1 {Ę}{{\k{E} }}1 {Ś}{{\'S}}1 {Ż}{{\.Z}}1 {Ó}{{\'O}}1 {Ź}{{\'Z}}1 }跨度>
    • 谢谢你,东德!这是一个节省时间的方法。你只忘记了ć和Ć。这是快速 Ctrl+C + Ctrl+V 其他人的完整列表(奖励:排序):\lstset{literate=% {ą}{{\k{a}}}1 {ć}{{\'c} }1 {ę}{{\k{e}}}1 {ł}{{\l{}}}1 {ń}{{\'n}}1 {ó}{{\'o}}1 { ś}{{\'s}}1 {ż}{{\.z}}1 {ź}{{\'z}}1 {Ą}{{\k{A}}}1 {Ć}{{ \'C}}1 {Ę}{{\k{E}}}1 {Ł}{{\L{}}}1 {Ń}{{\'N}}1 {Ó}{{\'O }}1 {Ś}{{\'S}}1 {Ż}{{\.Z}}1 {Ź}{{\'Z}}1 }(显然 cmets 没有换行符,所以粘贴后你必须修复它(例如在 vim 中::.s/ /\r/g
    • 谢谢 - 很好的解决方案!无论如何,它应该是{ß}{{\ss}}1,因为“ß”在输出中只占用 1 个字符;)
    【解决方案3】:

    波兰语:

    \lstset{%
    literate=%
     {ą}{{\k{a}}}1
     {ę}{{\k{e}}}1
     {Ą}{{\k{A}}}1
     {Ę}{{\k{E}}}1
     {ś}{{\'{s}}}1
     {Ś}{{\'{S}}}1
     {ź}{{\'{z}}}1
     {Ź}{{\'{Z}}}1
     {ń}{{\'{n}}}1
     {Ń}{{\'{N}}}1
     {ć}{{\'{c}}}1
     {Ć}{{\'{C}}}1
     {ó}{{\'{o}}}1
     {Ó}{{\'{O}}}1
     {ż}{{\.{z}}}1
     {Ż}{{\.{Z}}}1
     {ł}{{\l{}}}1
     {Ł}{{\l{}}}1
    }
    

    这里是符号列表,您可以根据自己的语言创建它:https://en.wikibooks.org/wiki/LaTeX/Special_Characters

    【讨论】:

      【解决方案4】:

      冰岛语:

      \lstset{
        literate=%
          {Á}{{\'A}}1
          {á}{{\'a}}1
          {Ð}{{\dh}}1
          {ð}{{\dh}}1
          {É}{{\'E}}1
          {é}{{\'e}}1
          {í}{{\'i}}1
          {Í}{{\'I}}1
          {Ó}{{\'O}}1
          {ó}{{\'o}}1
          {Ú}{{\'U}}1
          {ú}{{\'u}}1
          {Ý}{{\'Y}}1
          {ý}{{\'y}}1
          {Þ}{{\TH}}1
          {þ}{{\th}}1
          {Æ}{{\AE}}1
          {æ}{{\ae}}1
          {Ö}{{\"O}}1
          {ö}{{\"o}}1
      }
      

      【讨论】:

        【解决方案5】:

        我对巴西葡萄牙语的贡献。

        \lstset{%
                inputencoding=utf8,
                extendedchars=true,
                literate=%
                {é}{{\'{e}}}1
                {è}{{\`{e}}}1
                {ê}{{\^{e}}}1
                {ë}{{\¨{e}}}1
                {É}{{\'{E}}}1
                {Ê}{{\^{E}}}1
                {û}{{\^{u}}}1
                {ù}{{\`{u}}}1
                {ú}{{\'{u}}}1
                {â}{{\^{a}}}1
                {à}{{\`{a}}}1
                {á}{{\'{a}}}1
                {ã}{{\~{a}}}1
                {Á}{{\'{A}}}1
                {Â}{{\^{A}}}1
                {Ã}{{\~{A}}}1
                {ç}{{\c{c}}}1
                {Ç}{{\c{C}}}1
                {õ}{{\~{o}}}1
                {ó}{{\'{o}}}1
                {ô}{{\^{o}}}1
                {Õ}{{\~{O}}}1
                {Ó}{{\'{O}}}1
                {Ô}{{\^{O}}}1
                {î}{{\^{i}}}1
                {Î}{{\^{I}}}1
                {í}{{\'{i}}}1
                {Í}{{\~{Í}}}1
        }
        

        【讨论】:

          【解决方案6】:

          我们都知道 LaTeX 不能很好地处理希腊语。尽管如此,这是我的贡献,它需要几种变通方法,并且不包括变音符号(但有效!):

          \usepackage[greek]{babel}
          \usepackage{textgreek}
          \usepackage{listings}
          
          % Notice that here it is spelled ‘omikron’, not ‘omicron’,
          % and that I use ‘\textmugreek’ instead of ‘\textmu’,
          % which are both part of the textgreek package, but the
          % ‘normal’ \textmu conflicts with the textcomp package as
          % that uses another font for \textmu.
          \DeclareUnicodeCharacter{03BF}{\textomikron}
          \DeclareUnicodeCharacter{039F}{\textOmikron}
          \DeclareUnicodeCharacter{03BC}{\textmugreek}
          
          \lstset{
              inputencoding=utf8,
              extendedchars=true,
              literate=
              {α}{{\textalpha}}1   {Α}{{\textAlpha}}1
              {β}{{\textbeta}}1    {Β}{{\textBeta}}1
              {γ}{{\textgamma}}1   {Γ}{{\textGamma}}1
              {δ}{{\textdelta}}1   {Δ}{{\textDelta}}1
              {ε}{{\textepsilon}}1 {Ε}{{\textEpsilon}}1
              {ζ}{{\textzeta}}1    {Ζ}{{\textZeta}}1
              {η}{{\texteta}}1     {Η}{{\textEta}}1
              {θ}{{\texttheta}}1   {Θ}{{\textTheta}}1
              {ι}{{\textiota}}1    {Ι}{{\textIota}}1
              {κ}{{\textkappa}}1   {Κ}{{\textKappa}}1
              {λ}{{\textlambda}}1  {Λ}{{\textLambda}}1
              {μ}{{\textmugreek}}1 {Μ}{{\textMu}}1
              {ν}{{\textnu}}1      {Ν}{{\textNu}}1
              {ξ}{{\textxi}}1      {Ξ}{{\textXi}}1
              {ο}{{\textomikron}}1 {Ο}{{\textOmikron}}1
              {π}{{\textpi}}1      {Π}{{\textPi}}1
              {ρ}{{\textrho}}1     {Ρ}{{\textRho}}1
              {σ}{{\textsigma}}1   {Σ}{{\textSigma}}1   {ς}{{\textvarsigma}}1
              {τ}{{\texttau}}1     {Τ}{{\textTau}}1
              {υ}{{\textupsilon}}1 {Υ}{{\textUpsilon}}1
              {φ}{{\textphi}}1     {Φ}{{\textPhi}}1
              {χ}{{\textchi}}1     {Χ}{{\textChi}}1
              {ψ}{{\textpsi}}1     {Ψ}{{\textPsi}}1
              {ω}{{\textomega}}1   {Ω}{{\textOmega}}1
          }
          

          【讨论】:

            【解决方案7】:

            适用于大多数 iso 字符。 (包括我需要的瑞典语åäöÅÄÖ)

            \usepackage[utf8]{inputenc}
            \usepackage{listings}
            \lstset{literate=
              {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
              {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
              {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
              {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
              {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
              {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
              {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
              {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
              {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
              {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
              {€}{{\EUR}}1 {£}{{\pounds}}1
            }
            

            来源:http://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue

            【讨论】:

              【解决方案8】:

              越南人:

              \usepackage{vntex}
              \usepackage[utf8]{inputenc}
              \usepackage{listings}  
              \usepackage{tipa}
              
              \lstset{columns=fullflexible,literate=
              {đ}{{\dj}}1
              {â}{{\^a}}1
              {ă}{{\u{a}}}1
              {ê}{{\^e}}1
              {ô}{{\^o}}1
              {ơ}{{\ohorn}}1
              {ư}{{\uhorn}}1
              {á}{{\'a}}1
              {à}{{\`a}}1
              {ả}{\h{a}}1
              {ã}{{\~a}}1
              {ạ}{\textsubdot{a}}1
              {ấ}{\'{\^a}}1
              {ầ}{\`{\^a}}1
              {ẩ}{\h{\^a}}1
              {ẫ}{\~{\^a}}1
              {ậ}{\textsubdot{\^a}}1
              {ắ}{\'{\u{a}}}1
              {ằ}{\`{\u{a}}}1
              {ẳ}{\h{\u{a}}}1
              {ẵ}{\~{\u{a}}}1
              {ặ}{\textsubdot{\u{a}}}1
              {é}{{\'e}}1
              {è}{{\`e}}1
              {ẻ}{\h{e}}1
              {ẽ}{{\~e}}1
              {ẹ}{\textsubdot{e}}1
              {ế}{\'{\^e}}1
              {ề}{\`{\^e}}1
              {ể}{\h{\^e}}1
              {ễ}{\~{\^e}}1
              {ệ}{\textsubdot{\^{e}}}1
              {í}{{\'i}}1
              {ì}{{\`i}}1
              {ỉ}{\h{i}}1
              {ĩ}{{\~i}}1
              {ị}{\textsubdot{i}}1
              {ó}{{\'o}}1
              {ò}{{\`o}}1
              {ỏ}{\h{o}}1
              {õ}{{\~o}}1
              {ọ}{\textsubdot{o}}1
              {ố}{\'{\^o}}1
              {ồ}{\`{\^o}}1
              {ổ}{\h{\^o}}1
              {ỗ}{\~{\^o}}1
              {ộ}{\textsubdot{\^o}}1
              {ớ}{\'{\ohorn}}1
              {ờ}{\`{\ohorn}}1
              {ở}{\h{\ohorn}}1
              {ỡ}{\~{\ohorn}}1
              {ợ}{\textsubdot{\ohorn}}1
              {ú}{{\'u}}1
              {ù}{{\`u}}1
              {ủ}{\h{u}}1
              {ũ}{{\~u}}1
              {ụ}{\textsubdot{u}}1
              {ứ}{\'{\uhorn}}1
              {ừ}{\`{\uhorn}}1
              {ử}{\h{\uhorn}}1
              {ữ}{\~{\uhorn}}1
              {ự}{\textsubdot{\uhorn}}1
              {ý}{{\'y}}1
              {ỳ}{{\`y}}1
              {ỷ}{\h{y}}1
              {ỹ}{{\~y}}1
              {ỵ}{\textsubdot{y}}1
              {Đ}{{\DJ}}1
              {Â}{{\^A}}1
              {Ă}{{\u{A}}}1
              {Ê}{{\^E}}1
              {Ô}{{\^O}}1
              {Ơ}{{\OHORN}}1
              {Ư}{{\UHORN}}1
              {Á}{{\'A}}1
              {À}{{\`A}}1
              {Ả}{\h{A}}1
              {Ã}{{\~A}}1
              {Ạ}{\textsubdot{A}}1
              {Ấ}{\'{\^A}}1
              {Ầ}{\`{\^A}}1
              {Ẩ}{\h{\^A}}1
              {Ẫ}{\~{\^A}}1
              {Ậ}{\textsubdot{\^A}}1
              {Ắ}{\'{\u{A}}}1
              {Ằ}{\`{\u{A}}}1
              {Ẳ}{\h{\u{A}}}1
              {Ẵ}{\~{\u{A}}}1
              {Ặ}{\textsubdot{\u{A}}}1
              {É}{{\'E}}1
              {È}{{\`E}}1
              {Ẻ}{\h{E}}1
              {Ẽ}{{\~E}}1
              {Ẹ}{\textsubdot{E}}1
              {Ế}{\'{\^E}}1
              {Ề}{\`{\^E}}1
              {Ể}{\h{\^E}}1
              {Ễ}{\~{\^E}}1
              {Ệ}{\textsubdot{\^{E}}}1
              {Í}{{\'I}}1
              {Ì}{{\`I}}1
              {Ỉ}{\h{I}}1
              {Ĩ}{{\~I}}1
              {Ị}{\textsubdot{I}}1
              {Ó}{{\'O}}1
              {Ò}{{\`O}}1
              {Ỏ}{\h{O}}1
              {Õ}{{\~O}}1
              {Ọ}{\textsubdot{O}}1
              {Ố}{\'{\^O}}1
              {Ồ}{\`{\^O}}1
              {Ổ}{\h{\^O}}1
              {Ỗ}{\~{\^O}}1
              {Ộ}{\textsubdot{\^O}}1
              {Ớ}{\'{\OHORN}}1
              {Ờ}{\`{\OHORN}}1
              {Ở}{\h{\OHORN}}1
              {Ỡ}{\~{\OHORN}}1
              {Ợ}{\textsubdot{\OHORN}}1
              {Ú}{{\'U}}1
              {Ù}{{\`U}}1
              {Ủ}{\h{U}}1
              {Ũ}{{\~U}}1
              {Ụ}{\textsubdot{U}}1
              {Ứ}{\'{\UHORN}}1
              {Ừ}{\`{\UHORN}}1
              {Ử}{\h{\UHORN}}1
              {Ữ}{\~{\UHORN}}1
              {Ự}{\textsubdot{\UHORN}}1
              {Ý}{{\'Y}}1
              {Ỳ}{{\`Y}}1
              {Ỷ}{\h{Y}}1
              {Ỹ}{{\~Y}}1
              {Ỵ}{\textsubdot{Y}}1
                }
              

              【讨论】:

                【解决方案9】:

                我对立陶宛语的贡献:

                \lstset{%
                    literate=%
                     {ą}{{\k{a}}}1
                     {č}{{\v{c}}}1
                     {ę}{{\k{e}}}1
                     {ė}{{\.{e}}}1
                     {į}{{\k{i}}}1
                     {š}{{\v{s}}}1
                     {ų}{{\k{u}}}1
                     {ū}{{\={u}}}1
                     {ž}{{\v{z}}}1
                     {Ą}{{\k{A}}}1
                     {Č}{{\v{C}}}1
                     {Ę}{{\k{E}}}1
                     {Ė}{{\.{E}}}1
                     {Į}{{\k{I}}}1
                     {Š}{{\v{S}}}1
                     {Ų}{{\k{U}}}1
                     {Ū}{{\={U}}}1
                     {Ž}{{\v{Z}}}1
                }
                

                【讨论】:

                  【解决方案10】:

                  瑞典语版本:

                  \lstset{literate=%
                  {å}{{\r{a}}}1
                  {ä}{{\"a}}1
                  {ö}{{\"o}}1
                  {Å}{{\r{A}}}1
                  {Ä}{{\"A}}1
                  {Ö}{{\"O}}1
                  }
                  

                  【讨论】:

                    【解决方案11】:

                    法语更简单的方法。

                    \documentclass{article}
                        \usepackage[utf8]{inputenc}
                        \usepackage[francais]{babel}
                        \usepackage[T1]{fontenc}
                        \usepackage{listings}
                        \lstloadlanguages{R}
                        \lstset{language=R}
                        \lstset{%
                            inputencoding=utf8,
                                extendedchars=true,
                                literate=%
                                {é}{{\'{e}}}1
                                {è}{{\`{e}}}1
                                {ê}{{\^{e}}}1
                                {ë}{{\¨{e}}}1
                                {û}{{\^{u}}}1
                                {ù}{{\`{u}}}1
                                {â}{{\^{a}}}1
                                {à}{{\`{a}}}1
                                {î}{{\^{i}}}1
                                {ô}{{\^{o}}}1
                                {ç}{{\c{c}}}1
                                {Ç}{{\c{C}}}1
                                {É}{{\'{E}}}1
                                {Ê}{{\^{E}}}1
                                {À}{{\`{A}}}1
                                {Â}{{\^{A}}}1
                                {Î}{{\^{I}}}1
                        }
                    
                        \begin{document}
                        \begin{lstlisting}
                        # Est-ce que ça marche : é ê è à Â Ê É Î ç Ç
                        x<-rnorm(100,0,10)
                        plot(density(x))
                        \end{lstlisting}
                        \end{document}
                    

                    【讨论】:

                      【解决方案12】:

                      我对捷克语的贡献。

                      \lstset{
                          inputencoding=utf8,
                          extendedchars=true,
                          literate=%
                          {á}{{\'a}}1
                          {č}{{\v{c}}}1
                          {ď}{{\v{d}}}1
                          {é}{{\'e}}1
                          {ě}{{\v{e}}}1
                          {í}{{\'i}}1
                          {ň}{{\v{n}}}1
                          {ó}{{\'o}}1
                          {ř}{{\v{r}}}1
                          {š}{{\v{s}}}1
                          {ť}{{\v{t}}}1
                          {ú}{{\'u}}1
                          {ů}{{\r{u}}}1
                          {ý}{{\'y}}1
                          {ž}{{\v{z}}}1
                          {Á}{{\'A}}1
                          {Č}{{\v{C}}}1
                          {Ď}{{\v{D}}}1
                          {É}{{\'E}}1
                          {Ě}{{\v{E}}}1
                          {Í}{{\'I}}1
                          {Ň}{{\v{N}}}1
                          {Ó}{{\'O}}1
                          {Ř}{{\v{R}}}1
                          {Š}{{\v{S}}}1
                          {Ť}{{\v{T}}}1
                          {Ú}{{\'U}}1
                          {Ů}{{\r{U}}}1
                          {Ý}{{\'Y}}1
                          {Ž}{{\v{Z}}}1
                      }
                      

                      【讨论】:

                      • 谢谢! :) 请注意,我必须删除 inputencoding=utf8,extendedchars=true, 行以及 literate= 之后的 % 才能在我的情况下工作。
                      【解决方案13】:

                      @Janosch 解决方案中 listings.sty 的挪威字母:

                      \lst@ProcessLetter{"C5}{\AA}
                      \lst@ProcessLetter{"C6}{\AE}
                      \lst@ProcessLetter{"D8}{\O}
                      \lst@ProcessLetter{"E5}{\aa}
                      \lst@ProcessLetter{"E6}{\ae}
                      \lst@ProcessLetter{"F8}{\o}
                      

                      【讨论】:

                        【解决方案14】:

                        最干净的解决方案是使用 Listings2 包:http://www.atscire.de/index.php?nav=products/listings2

                        只需使用\usepackage{listings2} 代替\usepackage{listings} 即可。

                        【讨论】:

                          【解决方案15】:

                          对于仅限cmets,您可以使用texcl 选项:

                          \lstset{language=C++,texcl=true}
                          

                          比你的 cmets 变成乳胶,你可以使用“特殊”字符

                          \begin{lstlisting}
                          int iLink = 0x01; // Paramètre entrée
                          \end{lstlisting}
                          

                          【讨论】:

                          • 这是这里最优雅的解决方案之一,需要更多的支持! :)
                          • 哇!然后您甚至可以将数学公式放入列表中,例如double pi = 3.141; // This is $\pi$double d = 1.0 // $3 \int_0^1 x^2 dx$。这真的很酷!
                          • 太棒了!另一个选项(literate)不适用于 XeLaTex。
                          • 似乎如果某些评论中有$或类似的,它们将被解释为数学公式(这可能是无意的,如果格式错误会导致许多错误)
                          【解决方案16】:

                          与之前的帖子(yaxz 和其他人)类似,我为克罗地亚语定义了宏:

                          % on top
                          \usepackage[utf8]{inputenc}
                          \usepackage[T1]{fontenc}
                          \usepackage[croatian]{babel}
                          
                          % add listings package
                          \usepackage{listings}
                          
                          % set font translations
                          \lstset{inputencoding=utf8}
                          \lstset{extendedchars=true}
                          \lstset{
                              literate=%
                              {ć}{{\'c}}1
                              {č}{{\v{c}}}1
                              {đ}{{\dj{}}}1
                              {š}{{\v{s}}}1
                              {ž}{{\v{z}}}1
                              {Ć}{{\'C}}1
                              {Č}{{\v{C}}}1
                              {Đ}{{\DJ{}}}1
                              {Š}{{\v{S}}}1
                              {Ž}{{\v{Z}}}1
                          }
                          

                          我在添加关键字“inače”时仍有“小”问题。以下不适用于“inače”:

                          \lstset{morekeywords={ponavljaj, ako, inače, dok}}
                          

                          关键字“inače”(出现在代码中)未被识别为关键字。有什么想法吗?

                          希望这会帮助别人(除了我:))。

                          【讨论】:

                          • 我也有同样的问题,我想要一个带重音的关键字。有人做过吗?
                          【解决方案17】:

                          对我来说很好用!

                          我在法国方面的 2 美分:

                          \lst@ProcessOther {"C0}{\`{A}}
                          \lst@ProcessOther {"C1}{\'{A}}
                          \lst@ProcessOther {"C2}{\^{A}}
                          \lst@ProcessOther {"C4}{\"{A}}
                          \lst@ProcessOther {"C7}{\c{C}}
                          \lst@ProcessOther {"C8}{\`{E}}
                          \lst@ProcessOther {"C9}{\'{E}}
                          \lst@ProcessOther {"CA}{\^{E}}
                          \lst@ProcessOther {"CB}{\"{E}}
                          \lst@ProcessOther {"CE}{\^{I}}
                          \lst@ProcessOther {"CF}{\"{I}}
                          \lst@ProcessOther {"D4}{\^{O}}
                          \lst@ProcessOther {"D6}{\"{O}}
                          \lst@ProcessOther {"D9}{\`{U}}
                          \lst@ProcessOther {"DB}{\^{U}}
                          \lst@ProcessOther {"E0}{\`{a}}
                          \lst@ProcessOther {"E1}{\'{a}}
                          \lst@ProcessOther {"E2}{\^{a}}
                          \lst@ProcessOther {"E4}{\"{a}}
                          \lst@ProcessOther {"E7}{\c{c}}
                          \lst@ProcessOther {"E8}{\`{e}}
                          \lst@ProcessOther {"E9}{\'{e}}
                          \lst@ProcessOther {"EA}{\^{e}}
                          \lst@ProcessOther {"EB}{\"{e}}
                          \lst@ProcessOther {"EE}{\^{\i}}
                          \lst@ProcessOther {"EF}{\"{\i}}
                          \lst@ProcessOther {"F4}{\^{o}}
                          \lst@ProcessOther {"F6}{\"{o}}
                          \lst@ProcessOther {"F9}{\`{u}}
                          \lst@ProcessOther {"FB}{\^{u}}
                          

                          【讨论】:

                            【解决方案18】:

                            我找到了一种更简单的方法,对我有用:

                            \usepackage{listings}
                            
                            \lstset{
                              literate={ö}{{\"o}}1
                                       {ä}{{\"a}}1
                                       {ü}{{\"u}}1
                            }
                            

                            【讨论】:

                            • 这对我来说很好用,不需要包listingsutf8。最佳解决方法!
                            • 它也适用于土耳其语。这里是相关代码sn-p:\lstset{ literate={â}{{\^{a}}}1 {Â}{{\^{A}}}1 {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 {ğ}{{\u{g}}}1 {Ğ}{{\u{G}}}1 {ı}{{\i}}1 {İ}{{\.{I}}}1 {ö}{{\"o}}1 {Ö}{{\"O}}1 {ş}{{\c{s}}}1 {Ş}{{\c{S}}}1 {ü}{{\"u}}1 {Ü}{{\"U}}1 }
                            • 另一个答案中描述的使用texcl=true的解决方案似乎更优雅。
                            • 有人知道这个解决方案对于挪威字符 æøå 的效果如何?
                            • 我不认为这是一个解决方案或解决方法,因为如果您的内容很长(可能会生成)带有任意特殊字符,这将无济于事。
                            【解决方案19】:

                            我可以确认 Janosch 提供的解决方案几乎可以正常工作。

                            在我的情况下,我需要使用西班牙语字符:á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú 并尝试了他的解决方案但没有结果,直到我用 xelatex 而不是 pdflatex 编译我的文件.

                            无论如何,您应该在本地副本或直接在公共文件中修改 Listings.sty 并添加以下内容:

                            \lst@CCPutMacro
                                \lst@ProcessOther {"23}\#
                                \lst@ProcessLetter{"24}\textdollar
                                \lst@ProcessOther {"25}\%
                                \lst@ProcessOther {"26}\&
                                    %spanish letters coded in UTF
                                \lst@ProcessOther {"E1}{\'a}
                                \lst@ProcessOther {"C1}{\'A}
                                \lst@ProcessOther {"E9}{\'e}
                                \lst@ProcessOther {"C9}{\'E}
                                \lst@ProcessOther {"ED}{\'i}
                                \lst@ProcessOther {"CD}{\'I}
                                \lst@ProcessOther {"F3}{\'o}
                                \lst@ProcessOther {"D3}{\'O}
                                \lst@ProcessOther {"FA}{\'u}
                                \lst@ProcessOther {"DA}{\'U}
                                \lst@ProcessOther {"F1}{ñ}
                                \lst@ProcessOther {"D1}{Ñ}
                            

                            在我的 .tex 文件中,我使用了以下列表选项:

                            \usepackage{listingsutf8}
                            \lstset{
                                    inputencoding=utf8,
                                    extendedchars=\true}
                            

                            希望它可以帮助任何人,也许我们可以构建一个包含几乎所有 UTF8 字符的listing.sty...:)

                            【讨论】:

                              【解决方案20】:

                              如果您想使用任何 listings 包,请不要在 LaTex 中使用 UTF-8。在您的文档中使用 latin1 可以很好地显示德语变音符号。

                              我正在使用这个设置用德语写我的论文:

                              % Your language, here German
                              \usepackage[ngerman]{babel} 
                              % Will work with Umlauts
                              \usepackage[latin1]{inputenc}
                              % Euro characters etc.
                              \usepackage{textcomp}
                              % Works perfectly with latin1
                              \usepackage{listings}
                              

                              【讨论】:

                                【解决方案21】:

                                suggests 的作者使用 texcl 选项。有时有帮助,有时没有。

                                【讨论】:

                                  【解决方案22】:

                                  好的,现在找到了一种解决方法:

                                  1. 使用listingsutf8代替listings包

                                    \usepackage{listingsutf8}

                                  2. 将 listings.sty 复制到文档所在的文件夹

                                  3. 找到以下几行

                                    \lst@CCPutMacro
                                        \lst@ProcessOther {"23}\#
                                        \lst@ProcessLetter{"24}\textdollar
                                        \lst@ProcessOther {"25}\%
                                        \lst@ProcessOther {"26}\&
                                  4. 在此处输入以下行(每个“注册”一个变音符号)

                                    \lst@ProcessLetter{"E4}{\"a}
                                    \lst@ProcessLetter{"F6}{\"o}
                                    \lst@ProcessLetter{"FC}{\"u}
                                    \lst@ProcessLetter{"C4}{\"A}
                                    \lst@ProcessLetter{"D6}{\"O}
                                    \lst@ProcessLetter{"DC}{\"U}
                                    \lst@ProcessLetter{"DF}{\ss{}}
                                  5. 保存文件

                                  6. 使用

                                    \lstset{
                                        扩展字符=\真,
                                        输入编码=utf8/latin1
                                    }

                                  启用 utf8 字符到 latin1 字符的映射

                                  1. 将源文件的行尾从 windows (\r\n) 转换为 unix (\n)
                                  2. 享受

                                  我知道这在很多方面都很丑陋,但它是迄今为止唯一适合我的解决方案。

                                  【讨论】:

                                  • 我认为,'extendedchars=\true' 等于 'extendedchars=false'。
                                  • 我在 Ubuntu 10.10 上将 listings.sty 复制到了 /usr/share/texmf-texlive/tex/latex/listings/ 中的 listingsutf8.sty。我编辑了文件,但我的列表不起作用。
                                  【解决方案23】:

                                  您可能需要将文档的输入编码也设置为 UTF-8。有一个comp.text.tex thread 讨论如何做到这一点。以下是在 GNU/Linux 上的 TeXLive 中完成的:

                                  \usepackage[utf8]{inputenc}
                                  

                                  【讨论】:

                                  • 我的主文档是utf8。 (它有效,我什至可以在主文档中写 äöü)
                                  • listings 对字符的处理与主文档不同。所以 inputenc 在这里没有帮助; Listings 包需要明确支持 utf8 输入(因此是 Listingsutf8)。
                                  猜你喜欢
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2013-12-12
                                  • 1970-01-01
                                  • 2016-07-14
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多