带有 catchfilebetweentags 包的 Verbatim 环境

带有 catchfilebetweentags 包的 Verbatim 环境

我想在包中的调用verbatim中使用环境。ExecuteMetaDatacatchfilebetweentags

用例是,我的计量经济学软件创建了一个固定宽度的表格,但我暂时还不想将其转换为合适的表格。我可以将这个固定宽度的表格包装在标签中,并将其发送到日志文件。我还想将表格包装起来,verbatim以便表格更清晰易读,但当我添加 verbatim 环境时,我收到错误Runaway argument?。我想使用该catchfilebetweentags包,这样我就可以避免手动修剪每个表格的页眉和页脚(或计算行号)。

我可以以某种方式将固定宽度类型与catchfilebetweentags包结合起来吗?

这是我的 MWE。

\documentclass{article}
\usepackage{catchfilebetweentags}

\begin{document}
\ExecuteMetaData[inner]{table}
\end{document}

其中inner.tex如下。

%<*table>
\begin{verbatim}
col1    col2
1   2
3   4
\end{verbatim}
%</table>

答案1

我没有使用catchfilebetweentags包,而是调整了我的readarray包来实现这个技巧,甚至使用了本来会被寻找的标签catchfilebetweentags。它能够处理每个输入文件的多个表,并穿插任何文本(我认为)。

%为了处理标签中的搜索,我暂时使用了$注释字符。我不认为这会搞砸事情,但如果它$出现在您的表格数据中,可能会发生这种情况。在这种情况下,您可能希望选择其他替换。

已编辑(2016 年 12 月),消除了对已停用的内部readarray包命令的依赖\record<romannumeral record index>

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{readarray}[2016-11-07]
\newcounter{row}\global\newcounter{column}\newcounter{rcrd}
%\usepackage{catchfilebetweentags}
\usepackage{ifthen}
\parindent 0in

\def\switchcodes{%
  \edef\tmp{\matchcode}%
  \edef\matchcode{\altmatchcode}%
  \edef\altmatchcode{\tmp}%
  \if T\printit\def\printit{F}\else\def\printit{T}\fi%
}
\def\printit{F}

\catcode`\%=12 
\catcode`\$=14 
\newcommand\extracttables[1]{\bgroup\ttfamily$
\catcode`\%=12
\def\matchcode{%<*table>}
\def\altmatchcode{%</table>}
\readrecordarray{#1}\MyArray
\catcode`\$=14
\setcounter{rcrd}{0}$
\whiledo{\value{rcrd} < \nrecords}{$
  \stepcounter{rcrd}$
  \ifthenelse{\equal{\MyArray[\arabic{rcrd}]}{\matchcode}}{$
  \switchcodes\rule{10ex}{.2ex}\\$
  }{\if T\printit\MyArray[\arabic{rcrd}]~\\\fi}$
  }$
\catcode`\%=14$
\catcode`\$=3$
\egroup\vspace{-\baselineskip}$
}
\catcode`\%=14 
\catcode`\$=3 %

\begin{document}
%\ExecuteMetaData[inner]{table}

Testing...

\extracttables{inner.tex}

Back to normal text
\end{document}

以下是我用于 inner.tex 的内容。请注意,它包含多个表格。提取表格时,我在其上方和下方放置规则,以将其与文档的其余部分区分开来。

this is
my document prior to
%<*table>
col1    col2
1   2
3   4
%</table>
and my 
document after
the table
%<*table>
col3    col4
1   8
3   47
%</table>
and $ then some more
then
some more

在此处输入图片描述

ps 它实际上并不是逐字逐句地执行,而只是\ttfamily。如果逐字逐句地执行是必要的,请告诉我,我想我可以扩展解决方案。

相关内容