目标:我正在尝试做一个项目。我有一个由批处理脚本(Windows 批处理文件)编译和执行的程序。有好几个这样的脚本。
问题: 我想将它们列在我的 overleaf/latex 文档中,但找不到合适的语言。最重要的是,引用似乎截断了一些字母(例如“c”丢失了),而且不知何故 LaTeX 说有 4 行而不是 3 行。
LaTeX 配置:
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%----fonts
\usepackage{roboto}
\usepackage{mathptmx}
\usepackage{charter}
\usepackage{inconsolata}
我想引用的是
\begin{lstlisting}[caption={Trimming silence script},label={lst:scr1},language=command.com]
if not exist "C:\Users\Folder1\Script1" mkdir C:\Users\Folder1\Script1
for /l %x in (1, 1, 100) do echo %%x
pause
\end{lstlisting}
编译文件结果:
我在这里读到 command.com 可能是合适的语言,但无论我做什么改变,颜色等都保持不变。
答案1
答案2
这个答案包含了 ptrck 答案的一些 github 文件,但完成了 tex 文件的其余部分。github 文件的很大一部分被 占用morekeywords
。在这种情况下,我保留了控制字(Do
、Else
等),然后添加了代码示例中出现的其他五个词。这意味着这个语言定义并不像 github 上的定义那样详尽。如果您要将其用于多个批处理文件,则需要确保输入您使用的所有关键字。(另一方面,github 上的缺少not
、exist
和echo
,并且有mkdir
两次。)我还做了一些猜测,以使我的输出与您的输出更接近。
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\lstdefinelanguage{batch}{
morekeywords={not,exist,mkdir,echo,pause},
morekeywords={Do,Else,For,ForEach,Function,If,In,Until,While},
alsodigit={-},
sensitive=false,
morecomment=[l]{\#},
morecomment=[n]{<\#}{\#>},
morestring=[b]{"},
morestring=[b]{'},
morestring=[s]{@'}{'@},
morestring=[s]{@"}{"@},
numbers=right,
numberstyle=\tiny,
basicstyle=\footnotesize,
stringstyle=\color{green},
keywordstyle=\color{blue},
frame=tb,
}
\begin{document}
\begin{lstlisting}[caption={Trimming silence script},label={lst:scr1},language=batch]
if not exist "C:\Users\Folder1\Script1" mkdir C:\Users\Folder1\Script1
for /l %x in (1, 1, 100) do echo %%x
pause
\end{lstlisting}
\end{document}