fancyvrb 中的自定义计数器宏

fancyvrb 中的自定义计数器宏

我正在使用该fancyvrbLaTeX2e

我选择显示行号,因为我正在显示一些代码。

(我显示的代码是 Maple,不幸的是它不受列表包支持)。

由于我的代码中有些行太长,无法在整个页面上容纳,因此我在文件中手动将它们拆分.tex

我在此手动中断的末尾放置了一个回车符,以向读者表明此行代码在显示的下一行文本上继续。在下一行文本上,我放置了一个箭头符号(从左到右),以向读者表明此行文本是代码行的延续。(为了完整起见,这种断行代码的最后一行文本不包含回车符)。

在这种情况下(即这些手动断行具有明确的中断和延续字符),我想编写一个特殊的编号宏,将小写字母附加到指定的行号(按照以 开头的字母顺序a),并在延续的最后一行结束。

在这样一行断掉的代码之后,下一行代码的编号将恢复正常,小写字母计数器将重置为a

我仔细查看了fancyvrb软件包文档,但编写这样的宏对我来说是远远不够的。我也尝试寻找执行类似任务的宏示例,但未能成功。

任何帮助将非常感激(!)

非常感谢。

答案1

这可能不是您所要求的,但也许您可以适应。在这种情况下,如果用户可设置的连续字符是分割线的一部分,则将其放置在行的 1 号位置,而不是放置在行的末尾和下一行的开头。用户还可以设置编号方案的标签宽度。

verbnobox这种方法是对包环境的修改verbatimbox。在这里,我称之为fancynum

\documentclass{article}
\usepackage{verbatimbox}
\usepackage{stringstrings}

\makeatletter
\newenvironment{fancynum}{%
  \setcounter{VerbboxLineNo}{-1}%
% FOR SOME REASON, USING \my@par INSTEAD OF \par PREVENTS EXTRA SPACE
% ABOVE verbbox WHEN USING OPTIONAL ARGUMENTS
  \let\my@par\par%
  \def\verbatim@processline{%
%   FIRST \@tmp APPLIES OPTIONAL ARGUMENT TO EACH VERBATIM LINE
    {\addtocounter{VerbboxLineNo}{1}%
    \@tmp\setbox0=\hbox{\the\verbatim@line}%
    \hsize=\wd0 \decidenow\the\verbatim@line\my@par}}%
\verbatim\verbbox@inner%
}
{%
  \endverbatim%
  \global\def\@tmp{}%
}
\newcounter{contindex}
\setcounter{contindex}{0}
\def\newvline{}
\def\decidenow{}
\def\contflag{F}
\def\decidenow{}

\newcommand\checkcontinued{%
  \isnextbyte[q]{\continuechar}{\the\verbatim@line}%
  \if T\theresult%
    \if T\contflag\addtocounter{VerbboxLineNo}{-1}\fi%
    \global\def\contflag{T}%
    \stepcounter{contindex}%
    \makebox[\vlabelwidth][l]{\arabic{VerbboxLineNo}\alph{contindex}:}%
    \global\def\decidenow{\expandafter\@gobble}
  \else%
    \global\def\contflag{F}%
    \setcounter{contindex}{0}%
    \makebox[\vlabelwidth][l]{\arabic{VerbboxLineNo}:}%
    \global\def\decidenow{}
  \fi%
}
%USER CAN SET THESE TWO VALUES
\def\continuechar{|}
\def\vlabelwidth{5ex}
\makeatother

\begin{document}

\begin{fancynum}[\checkcontinued]
first line \|$^%
|Second line
|coontinuation of Second line \|$^%
Third Line
Fourth Line
|Fifth Line
|continuation of Fifth Line
|continuation of Fifth Line
|continuation of Fifth Line
Sixth Line
Seventh Line
\end{fancynum}

\end{document}

在此处输入图片描述

相关内容