当 .dat 文件包含 ( 或 * 符号时,\VerbatimInput 会出现错误

当 .dat 文件包含 ( 或 * 符号时,\VerbatimInput 会出现错误

我调用了\VerbatimInput一个test.dat文件,如下所示:

 \documentclass[12pt]{article}

 \usepackage[left=2.5cm,top=2.5cm,right=2.5cm,bottom=2.5cm]{geometry}
 \usepackage[utf8]{inputenc}
 \usepackage{enumitem}
 \usepackage{fancyvrb}
 \usepackage{color,soul}
 \usepackage[dvipsnames]{xcolor}


 \begin{document}


 \RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}%
 {fontsize=\footnotesize,
  %
  frame=lines,  % top and bottom rule only
  framesep=2em, % separation between frame and text
  rulecolor=\color{Gray},
  %
  label=\fbox{\color{Black}test.dat},
  labelposition=topline,
  %
  commandchars=\|\(\), % escape character and argument delimiters for
                  % commands within the verbatim
  commentchar=*        % comment character
 }

 \VerbatimInput{./test.dat}


 \end{document}

test.dat文件内容如下:

 #l.77:
 TEST11

 A3

  (EL = 4) # this is compiled ok
  mH/(C*K) # this is not compiled, giving that error

由于( * )符号的原因,编译时出现以下错误:

 Runaway definition?
 -> mH/(C
 ! File ended within \read.
 <read 1> 

 l.97 \VerbatimInput{./test.dat}

我该如何编译它?

答案1

首先,我必须说我实际上没有使用过\VerbatimInput。但是,您发布的那段代码看起来与以下答案中发布的代码完全一样:逐字包含 .txt 文件中的数据

引用作者的话:

  • 指定|(/)作为转义字符和参数分隔符意味着这些符号不能作为逐字文本的一部分出现(或者在本例中,data.txt 的内容);
  • *通过指定注释字符(类似于%LaTeX),删除了 data.txt 中的星号行;

换句话说,您复制的代码赋予了这四个字符特殊的含义,因此不能与包含它们的文件一起使用。

似乎正在执行此操作的行如下:

commandchars=\|\(\), % escape character and argument delimiters for
              % commands within the verbatim
commentchar=*        % comment character

因此,我建议从您的代码中删除这些字符,或者用一些未出现在您的文件中的字符替换这些字符。

相关内容