我试图将 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 来绕过它。