lstlisting 环境无法编译,因为代码注释

lstlisting 环境无法编译,因为代码注释

我试图将 Verilog 代码列表放入我的文档中,但是在处理注释行时它返回 Latex 错误,这里是 MWE:

\documentclass[12pt,letterpaper,twoside]{book}
\usepackage[spanish]{babel}
\usepackage{listings}
\renewcommand{\lstlistingname}{Listado}

\begin{lstlisting}[language=Verilog]
/*Descripción estructural de un multiplexor 2 a 1*/

//interfaz I/O del módulo
module mux(f,a,b,sel);

\end{lstlisting}

这些是我收到的编译错误:

!LaTeX 错误 无效的 UTF-8 字节“B3。!LaTeX 错误

! LaTeX 错误 无效的 UTF-8 字节序列 (�\expandafter)

如果我删除注释行,文档就可以正常编译。经过一番研究,我使用了 \UseRawInputEncoding 命令,如下所示:程序包 inputenc 错误:无效的 UTF-8 字节 147但是当我这样做时,我的环境不会处理重音字母,所以我需要输入文字命令 \'{a}。考虑到我的文档有 50 多页,寻找其中的每个重音似乎是一项苦差事,有没有更有效的方法来做到这一点?(附录:编码命令 \usepackage[utf8]{inputenc} 也不起作用)

答案1

使用 literate 选项使非 ascii 字符在列表中是安全的:

\documentclass[12pt,letterpaper,twoside]{book}
\usepackage[spanish]{babel}
\usepackage{listings}
\renewcommand{\lstlistingname}{Listado}
\begin{document}
\begin{lstlisting}[language=Verilog,literate={ó}{{\'{o}}}1]
/*Descripción estructural de un multiplexor 2 a 1*/

//interfaz I/O del módulo
module mux(f,a,b,sel);

\end{lstlisting}
\end{document}

答案2

我遇到了同样的问题,并且能够通过使用 luatex 而不是 xetex 来绕过它。

相关内容