Necesito incluir código en el apéndice de mi tesis. El código contiene comentarios y la compilación se interrumpe instantáneamente y regresa:
Unicode char �\lst@FillFixed@ (U+5A8)
(inputenc) not set up for use with LaTeX.
l.160 if (lastArg < 0, lastArg = 360°
+ lastArg);
Este es sólo uno de los muchos personajes que producen problemas. No puedo cambiar todo mi código solo porque no se compila. ¿Hay alguna forma de incluir código con caracteres Unicode arbitrarios? Gracias.
Editar:código de muestra completo, según lo solicitado.
\RequirePackage[l2tabu,orthodox]{nag}
\documentclass[headsepline,footsepline,footinclude=false,oneside,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc]{scrbook} % one-sided
\usepackage[toc,page]{appendix}
\usepackage{listings}
\usepackage[utf8]{inputenc}
\lstset{
inputencoding=utf8,
extendedchars=true,
basicstyle=\footnotesize\ttfamily,
showstringspaces=false,
showspaces=false,
numbers=left,
numberstyle=\footnotesize,
numbersep=9pt,
tabsize=2,
breaklines=true,
showtabs=false,
captionpos=b,
literate={ö}{{\"o}}1 {ä}{{\"a}}1 {ü}{{\"u}}1
}
\begin{document}
\begin{appendices}
\lstinputlisting{code/power_series.html}
\end{appendices}
\end{document}
Contenido relevante de power_series.html
:
if (lastArg < 0, lastArg = 360° + lastArg);
Realmente no hay mucho que decir sobre este problema. Sólo quiero poder utilizar todos los caracteres Unicode dentro de una lista. Gracias.
Respuesta1
Defina el carácter Unicode de la forma adecuada.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{listingsutf8}
\protected\def\dg{\ensuremath{^\circ}}
\DeclareUnicodeCharacter{05A8}{\dg}
\lstset{
inputencoding=utf8,
extendedchars=true,
basicstyle=\footnotesize\ttfamily,
showstringspaces=false,
showspaces=false,
numbers=left,
numberstyle=\footnotesize,
numbersep=9pt,
tabsize=2,
breaklines=true,
showtabs=false,
captionpos=b,
literate={ö}{{\"o}}1 {ä}{{\"a}}1 {ü}{{\"u}}1 {°}{\dg}1
}
\begin{document}
\lstinputlisting{\jobname.html}
\end{document}
El \jobname.html
archivo contiene
if (lastArg < 0, lastArg = 360° + lastArg);
Aquí está el resultado.