listings 包中的 `advise` 环境

listings 包中的 `advise` 环境

我正在读latex listings 包的文档还有建议其中看起来像这样:

清单文档中的建议环境

我快速浏览了一下文档的源代码事实证明,存在一个advise环境:

\begin{advise}
\item Must I do that really?
    \advisespace
    Yes and no. Some books about programming say this is good.

它似乎是在包内部定义的:

% \begin{environment}{advise}
% \begin{macro}{\advisespace}
% The environment uses |\@listi|.
%    \begin{macrocode}
 \def\advise{\par\list\labeladvise
    {\advance\linewidth\@totalleftmargin
     \@totalleftmargin\z@
     \@listi
     \let\small\footnotesize \small\sffamily
     \parsep \z@ \@plus\z@ \@minus\z@
     \topsep6\p@ \@plus1\p@\@minus2\p@
     \def\makelabel##1{\hss\llap{##1}}}}
\let\endadvise\endlist
%    \end{macrocode}
%    \begin{macrocode}
\def\advisespace{\hbox{}\qquad}
\def\labeladvise{$\to$}
%    \end{macrocode}
% \end{macro}
% \end{environment}

但是,我既不理解这个代码片段,也无法让它工作(复制和粘贴不起作用,而且我不知道注释中的代码是什么意思)。

有没有可能advise有一个 -package?有没有办法让这段代码在 listings 包之外工作?如果有,怎么做?

答案1

的代码advise实际上是环境,尽管没有\newenvironment语法。这是因为作者分别定义了开始\advise和结束\endadvise组件。无论如何,advise是一个list环境,并且list接受两个参数来指定一些参数和标签样式。如今大多数人使用包来操作标签和间距(例如enumitem),但仍可以使用 TeX 基本原理来定义。有关 的详细信息\list,请参阅source2e.pdf(部分56 列表和相关环境,第 218 页)。以下是摘录:

\list{<label>}{<commands>} ... \endlist

其中<label>\labeladvise包含<commands>所有间距和\makelabel命令/重新定义。

.sty注释掉的代码是编写在代码( )和文档(.tex和)方面自成一体的包的一种风格.pdf。通常,这些包写成.dtx&.ins对,并处理成各种输出文件。请参阅如何安装.dtx文件?或者我可以将.dtx文件转换为.tex文件吗

以下是使用该代码的示例:

在此处输入图片描述

\documentclass{article}
\makeatletter
\def\advise{\par\list\labeladvise
  {\advance\linewidth\@totalleftmargin
   \@totalleftmargin\z@
   \@listi
   \let\small\footnotesize \small\sffamily
   \parsep \z@ \@plus\z@ \@minus\z@
   \topsep6\p@ \@plus1\p@\@minus2\p@
   \def\makelabel##1{\hss\llap{##1}}}}
\let\endadvise\endlist
\def\advisespace{\hbox{}\qquad}
\def\labeladvise{$\to$}
\makeatother
\begin{document}
\begin{advise}
  \item Must I do that really?
    \advisespace
    Yes and no. Some books about programming say this is good.
\end{advise}
\end{document}

\makeatletter请注意和的用法\makeatother,因为你正在将@其用作宏的一部分。请参阅做什么\makeatletter\makeatother做什么?

相关内容