确定逐字环境中的行数

确定逐字环境中的行数

我正在尝试为包实现两个新的键值对fancyvrb:head= 和 tail= 指定要显示多少行:也就是说head=10tail=5指定打印环境的前 10 行和最后 5 行。

(我知道firstline=lastline=选项已经可用,但它们用于指定环境的“中间”部分,这是一个不同的问题。)

head=价值发挥作用并不容易,但我想我知道如何做到这一点。

我对此值tail=感到困惑。为了显示尾部,我需要知道尾部从哪里开始,这就假设我知道环境中有多少行。

有方法吗?

答案1

我认为有两种方法可以完成这项任务。

第一种方法。将逐字文本保存到临时文件中,然后加载它。概念证明

\documentclass[a4paper]{article}
\usepackage{fancyvrb}

\makeatletter
\newenvironment{tail}[1]
  {\def\@tailnumber{#1}%
   \VerbatimOut{tailtemp.tmp}}
  {\endVerbatimOut
   \VerbatimInput[firstline=\number\numexpr\FV@CodeLineNo-\@tailnumber+1\relax]{tailtemp.tmp}}
\makeatother

\begin{document}
\begin{tail}{2}
a
b
c
\end{tail}

第二种方法。假设逐字行的高度都相同。将处理后的逐字环境保存在 中,\vbox然后使用 进行拆分\vsplit

相关内容