我正在尝试为包实现两个新的键值对fancyvrb
:head= 和 tail= 指定要显示多少行:也就是说head=10
,tail=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
。