viñetas romanos romana personalizadas numeros numeradas numeracion listas letras itemize continuar encoding latex utf-8 diacritics listings

encoding - romana - numeros romanos en latex



Listados en Latex con UTF-8(o al menos umlauts alemanes) (22)

Al igual que en las publicaciones anteriores (yaxz y otros) definí macros para croata:

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

Todavía tengo un "pequeño" problema al agregar la palabra clave "inače". Lo siguiente no funcionará para "inače":

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

La palabra clave "inače" (que aparece en el código) no se reconoce como palabra clave. ¿Algunas ideas?

Espero que esto ayude a alguien (aparte de mi :)).

Tratando de incluir un archivo fuente en mi documento de látex usando el paquete de listados, tengo problemas con diéresis alemanas dentro de los comentarios en el código. Utilizando

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

Las umlauts en los archivos de origen (codificados en UTF-8 sin BOM) se procesan, pero de alguna manera se mueven al principio de la palabra en la que están contenidos.

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

en el archivo fuente de entrada, se convierte en

// die ößGre muss übercksichtigt werden

en el archivo de salida.

NOTA: ya que encontré errores en mi configuración inicial, edité esta pregunta en gran medida


El autor del paquete suggests usar la opción texcl. A veces ayuda, a veces no.


Encontré un enfoque más simple, que funciona para mí:

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


Enfoque más sencillo para el francés.

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


Es posible que deba configurar la codificación de entrada del documento para que también sea UTF-8. Hay un hilo comp.text.tex que explica cómo hacer esto. Lo siguiente logra esto en TeXLive en GNU / Linux:

/usepackage[utf8]{inputenc}


Funciona bien para mí!

Mis 2 centavos para el lado francés:

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


Funciona para la mayoría de los iso-personajes. (Incluyendo åäöÅÄÖ sueco que es lo que necesitaba)

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

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



La versión sueca:

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


Letras noruegas para los listados.está en la solución de @ Janosch:

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


Mi aporte para el portugués brasileño.

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


Mi contribución para el idioma checo.

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


Mi contribución para el idioma lituano:

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


Para el islandés:

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


Para los vietnamitas:

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


Para polaco:

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

Y aquí está la lista de símbolos para que pueda crearla para su idioma: https://en.wikibooks.org/wiki/LaTeX/Special_Characters


Puedo confirmar que la solución provista por Janosch funciona casi correctamente.

En mi caso necesitaba usar caracteres españoles: á, é, í, ó, ú, ñ, Á, É, Í, Ó, Ú y probé su solución sin resultados hasta que compilé mi archivo con xelatex en lugar de pdflatex.

De todos modos, debe modificar Listings.sty en su copia local o directamente en el archivo común y agregue lo siguiente:

/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}{Ñ}

En mi archivo .tex usé las siguientes opciones para los listados:

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

Espero que pueda ayudar a cualquiera y tal vez podamos construir un listado que contenga casi todos los caracteres UTF8 ... :)


Simplemente no use UTF-8 en LaTex si desea usar cualquier paquete de listados . El uso de latin1 en sus documentos mostrará bien las Umlauts alemanas.

Estoy escribiendo mi tesis en alemán usando esta configuración:

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


So geht es (debería funcionar para otros idiomas - español, danés también)

---RECORTE---

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


Todos sabemos cómo LaTeX no juega bien con el griego. Sin embargo, aquí está mi contribución, que requiere varias soluciones, y no incluye diacríticos (¡pero funciona!):

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


ok, encontré un poco de solución ahora:

  1. en lugar del paquete de listados, use Listingsutf8

    / usepackage {Listingsutf8}

  2. copiar listados. en la carpeta donde reside el documento

  3. encuentra las siguientes líneas

    /lst@CCPutMacro /lst@ProcessOther {"23}/# /lst@ProcessLetter{"24}/textdollar /lst@ProcessOther {"25}/% /lst@ProcessOther {"26}/&

  4. Introduzca allí las siguientes líneas (cada "registro" una diéresis)

    /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. Guarda el archivo

  6. Utilizar

    /lstset{ extendedchars=/true, inputencoding=utf8/latin1 }

para habilitar el carácter utf8 al mapeo de caracteres latin1

  1. Convierta los finales de línea de su archivo fuente de windows (/ r / n) a unix (/ n)
  2. disfrutar

Sé que esto es feo de muchas maneras, pero es la única solución que funciona para mí hasta ahora.


Solo para comentarios , puede usar la opción texcl :

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

Que tus comentarios se conviertan en látex y puedas usar caracteres "especiales"

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