我正在使用showexpl.sty
并排显示代码片段及其相应的输出。
由于论文大小的限制,我有意从代码片段中删除“冗余”的行,即前 n 行和后 m 行。
可以在 中做到这一点吗showexpl.sty
?
\documentclass{article}
\usepackage{showexpl}
\lstset{%
% any setting goes here.
}
\begin{document}
\begin{LTXexample}[%
%any option goes here.
]
%redundant n rows begin
% one
% two
% ...
% n th rows
Important parts go here.
Again... it is important!
...
%redundant m rows begin
% one
% ...
% m th rows
\end{LTXexample}
% others important parts go here.
\end{document}
我重新提出这个问题是因为linerange
当我直到“运行时”才知道行数时,使用是不可能的。
我将使用@Herbert 的解决方案进行内联代码包含,使用@TH 的解决方案进行外部代码包含。不幸的是,我无法让 2 个绿色标记通过。
答案1
定义一个自己的环境,使用\START
--\STOP
序列来列出需要列出的部分。这两个命令本身没有任何意义。你不需要知道你的代码有多少行。
\documentclass{article}
\makeatletter
\let\pc\@percentchar
\makeatother
\usepackage{pstricks,fancyvrb,array,listings}
\lstset{basicstyle=\ttfamily\small}
\def\endExample{\end{VerbatimOut}
\def\START{}\def\STOP{}\input{\jobname.tmp}}
\newcommand\Example{%
\VerbatimEnvironment
\begin{VerbatimOut}{\jobname.tmp}}
\begin{document}
\begin{tabular}{@{} m{0.5\linewidth}@{}
>{\lstinputlisting[includerangemarker=false,
linerange=\\START-\\STOP]{\jobname.tmp}}m{0.5\linewidth} @{}}
\begin{Example}
\pspicture(3,2)
\START
\psframe*[linecolor=blue!30](3,2)
\STOP
\endpspicture
\end{Example}
&
\tabularnewline
\begin{Example}
\pspicture(3,2)
\START
\psframe*[linecolor=red!30](3,2)
\endpspicture
\STOP
\end{Example}
&
\tabularnewline
\end{tabular}
\end{document}
答案2
您可以随时预先计算出文件中的行数。
% This line will be removed
\documentclass{article}
\usepackage{listings}
\newread\lf
\newcount\linecount
\newcommand\linesinfile[1]{%
\linecount0
\openin\lf#1
\unless\ifeof\lf
\loop
\readline\lf to\lfline
\unless\ifeof\lf
\advance\linecount by1
\repeat
\closein\lf
\fi
}
\begin{document}
\linesinfile{\jobname.tex}
There are \number\linecount\ lines in the file `\jobname.tex'.
\small
\lstinputlisting[language={[LaTeX]TeX},firstline=2,
lastline=\numexpr\linecount-1]{\jobname.tex}
\end{document}
% This line will be removed
答案3
如果有人对 ConTeXt 中的类似结果感兴趣:
\typefile[range={+5,-8}]{filename}
将删除前五行和后八行。