通过 Overleaf 项目中的列表排版批处理文件

通过 Overleaf 项目中的列表排版批处理文件

目标:我正在尝试做一个项目。我有一个由批处理脚本(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 可能是合适的语言,但无论我做什么改变,颜色等都保持不变。

使用 \usepackage{listings} 在 LaTeX 中包含 AutoHotkey 和批处理文件代码

答案1

您需要定义自己的语言,因为批次未在列表包中定义。

无论如何,经过谷歌搜索,我可以在以下 github 存储库中找到 PowerShell 语言的定义(应该类似于批处理):这里

使用此代码段并将其添加到 之前\begin{document},然后language=PowerShell为您的列表定义。您可能需要调整语言定义中的某些关键字以满足您的需求。

此外,请确保代码片段中没有使用特殊字符。看这里 另外,代码片段中的第一行是空的,这就是为什么有四行。

答案2

这个答案包含了 ptrck 答案的一些 github 文件,但完成了 tex 文件的其余部分。github 文件的很大一部分被 占用morekeywords。在这种情况下,我保留了控制字(DoElse等),然后添加了代码示例中出现的其他五个词。这意味着这个语言定义并不像 github 上的定义那样详尽。如果您要将其用于多个批处理文件,则需要确保输入您使用的所有关键字。(另一方面,github 上的缺少notexistecho,并且有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}

输出

相关内容