我正在尝试将 Visual Basic 代码片段插入我的 latex 文档中。我已安装 listings 包,它适用于 C++ 代码。但当我尝试使用以下命令时,它显示错误(Package Listings 错误:未找到文件 B(.tex))。
\small
\singlespace
\lstinputlisting[frame=single,title={VarGlob.bas},language=[Visual]Basic)]{codigo/VarGlob.vb}
\normalsize
\onehalfspace
有人能帮我解决这个问题吗?
谢谢。
答案1
通常,LaTeX 处理可选参数的方式是,当[
在宏名称后看到 时,它会将从该名称[
到]
它看到的第一个名称的所有内容视为与可选参数处于同一括号级别的内容。因此,当您有 时language=[Visual]Basic
,LaTeX 会将]
之后视为Visual
可选参数的结尾。\lstinputlisting
有一个强制参数,因此 LaTeX 会抓取它找到的下一个标记,即B
inBasic
和 that 成为强制参数。
这解释了您收到的错误 -B
被读为文件名,并且listings
似乎具有.tex
默认扩展名(基于错误消息)。
因此,您必须language={[Visual]Basic}
使用一组额外的括号来执行此操作,以免将其]
解释为可选参数的结尾。
此外,我会将 添加到的 中,而不是\small\singlespace
/ 。请注意,如果您在序言中设置了来设置一般样式,我会将其添加到那里。\normalsize\onehalfspace
\small\singlespace
basicstyle
listing
\lstset
\documentclass{article}
\usepackage{listings}
\usepackage{setspace}
\usepackage{lipsum} % just for dummy text, no need to include it in your actual document
\begin{document}
\onehalfspace
\lipsum[1]
\lstinputlisting[
basicstyle=\small\singlespace,
frame=single,
title={VarGlob.bas},
language={[Visual]Basic}
]{codigo/VarGlob.vb}
\lipsum[2]
\end{document}