1

是否可以在逐字环境和一些缩进中创建带有参数的新命令?

\newcommand{codeblock}[1]{\begin{quote}\begin{verbatim}#1\end{verbatim}\end{quote}}

这不起作用。还有其他方法吗?

4

2 回答 2

5

如何\begin{verbatim}运作。简短而粗略。

  1. \begin{verbatim}扩展为\verbatim
  2. 然后\verbatim将每个特殊字符的类别代码设置为 12。现在所有字符都像数字或点。
  3. 然后\verbatim设置字体、parindent 和调用\@xverbatim
  4. \@xverbatim使用以下技巧逐字记录结尾:

    \def\@xverbatim#1\end{#1\end}
    
  5. 然后\end{verbatim}完成工作。

如何\newcommand{\codeblock}[1]{\begin{quote}\begin{verbatim}#1\end{verbatim}\end{quote}}运作。

  1. 首先\codeblock{Some {}$&%^_}阅读它的论点。
  2. #1 --> Some code {}$&%^_

    注意: { , }, $, &, %, ^,_有类别 1,2,3,4,6,7,8而不是 11 或 12!!!)

  3. \codeblock扩展到\begin{quote}\begin{verbatim} Some {}$&%^_\end {verbatim}\end {quote}. 重要提示:反斜杠的\end类别为 0 而不是 11。此外{,和}的类别为 1 和 2 而不是 11。而$, &, %,^_类别为 3,4,6,7,8。
  4. \begin{quote}扩展到\quote\quote执行。
  5. 然后\begin{verbatim}扩展为\varbatim\varbatim更改所有类别和字体。但是(重要)反斜杠(in \end)的类别仍然等于0。并且由于“参数阅读”在更改所有类别之前执行,因此键入的{类别仍然存在。但是您需要所有 char 都具有 11 o 12 类别。}$&%^_Some\verbatim
  6. 然后\verbatim调用\@xverbatim.
  7. \@xverbatim尝试使用以下技巧抓住你的论点:

    \def\@xverbatim#1\end{#1\end}
    

    但这是不可能的,因为\@xverbatim试图捕捉 \end所有字母(\, e, n, d)的类别 12 和 11。但实际上有四个字母具有其他类别代码: \类别 0 和e, nd类别 11。

    有可能(我不确定)这个技巧更熟练:

    替代文字

    红色字符的类别为 12。绿色字符的类别为 11。 \def, \@xverbatim,是带有(类别 0)和字母(类别 11)\end的宏。\

  8. \@xverbatim正在尝试并尝试找到\end反斜杠 ( \) 的类别 11 但是....File ended while scanning use of \@xverbatim

如果要创建新宏\codeblock,则必须执行上述文本之类的操作。

于 2010-12-14T21:26:48.920 回答
2

看起来您希望在文档中包含代码,在这种情况下,包列表可能比逐字记录更好。清单还为您提供了许多常用语言的行号和语法突出显示等不错的功能。如果您的 LaTeX 发行版尚未安装,请参阅http://www.ctan.org/tex-archive/macros/latex/contrib/listings/ 。

于 2010-12-14T14:28:49.233 回答