Verbatim 中的 LaTeX 投诉命令

Verbatim 中的 LaTeX 投诉命令

已知事实:

已读过LaTeX 抱怨非法参数数量

Verbatim环境中,每个 LaTeX 命令都将作为纯文本处理。但是,我需要一个有效的命令Verbatim

客观的:

我有一个sample.cls文件,它将被\VerbatimInput放到主.tex文件中,以便我可以在读入后在主文件中参考解释。以下是我用来输入的代码sample.cls

\fvset{frame=none,numbers=left,numbersep=3pt,firstline=1,lastline=20}
\VerbatimInput[commandchars=+\[\]]{sample.cls}

读入后的图像如下所示(这sample.cls是临时的,包含以下几行。)

在此处输入图片描述

例如,我指的是第 (9) 行和第 (13) 行之间的块。请注意,我使用的标签格式sample.cls+label[vrb:test1]+label[vrb:test2],由于在 Verbertim 环境中是两个控制序列,因此在这里看不到它们。

通过在结构中插入命令的引用方案Verbatim工作正常,但是 LaTeX 会抱怨这些命令,因为它们嵌入在sample.cls主文件需要(正在使用)的命令中。

简而言之,标签+label[vrb:test1]+label[vrb:test2]相当于环境中的动作命令\label{vrb:test1}和,但 LaTeX 会出现错误。\label{vrb:test1}Verbatim

问题:

尽管按下ENTER键仍然可以完成编译,但我写信是为了寻求帮助解决这个困境(即不需要按下ENTER键)以及如何避免这些矛盾。

获得错误信号,Window,TeXworks 环境

60
LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.60 \setlength{\topmargin}{-0.5cm} +
                                     label[vrb:psize1]
89
LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.89 +
      label[vrb:cc]
175
LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.175 +
       label[vrb:title1]

样本.cls

 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{sample}[Sample class]
 %-------------------------- initial code -----------------------
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
 +label[vrb:test1]
 %-------------------------- initial code -----------------------
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
 %-------------------------- executation ---------------------
 \ProcessOptions\relax
 \LoadClass[a4paper,openright]{report}  
 +label[vrb:test2]
 \endinput

主文件

 \documentclass[12pt]{sample}
 \usepackage{fancyvrb}

 \begin{document}

 \fvset{frame=none,numbers=left,numbersep=3pt,firstline=1,lastline=20}
 \VerbatimInput[commandchars=+\[\]]{sample.cls}
 For example, the block between line (\ref{vrb:test1}) and line (\ref{vrb:test2}) is
 what I am refering to.  Notice that the label format I used in sample.cls are +   
 label[vrb:test1] and + label[vrb:test2], which are not seen here due to being two      
 control sequences in Verbertim. environment.

 \end{document}

答案1

我没有收到任何错误\VerbatimInput;但你的类文件当然是非法的,错误消息

LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.60 \setlength{\topmargin}{-0.5cm} +
                                     label[vrb:psize1]

很清楚:在加载类时,+开始排版,这在加载类或包时显然是不允许的。

您可以通过将标签隐藏在注释字符后面来避免这种情况:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sample}[Sample class]
%-------------------------- initial code -----------------------
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} % +label[vrb:test1]
%-------------------------- initial code -----------------------
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
%-------------------------- execution ---------------------
\ProcessOptions\relax
\LoadClass[a4paper,openright]{report}  % +label[vrb:test2]
\endinput

然而,方括号不会被打印,因为当文本被处理时它们会被视为大括号\VerbatimInput

相关内容