使用 \DefineVerbatimEnvironment 时,如果结尾出现 % 则出现 FancyVerb 错误

使用 \DefineVerbatimEnvironment 时,如果结尾出现 % 则出现 FancyVerb 错误

%当 MWE位于行末时会出现错误,如下所示

\documentclass[11pt]{article}%
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{Xsmall}{Verbatim}{fontsize=\small}
\begin{document}
\begin{Xsmall}
test
\end{Xsmall}%  ------> This causes the error
\end{document}

然后pdflatex给出

) (/usr/local/texlive/2015/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty
Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix 
<2008/02/07> (tvz)
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty)) (./foo.aux)
! FancyVerb Error:
  Extraneous input `%\end{}' between \end{Xsmall} and line end
.
\FV@Error ... {FancyVerb Error:
\space \space #1
}                                                      
l.11 \end{Xsmall}%

当然,解决办法是不要放在%那里。但生活并没有那么简单。我使用另一个软件来帮助我生成这些 tex 文件。而且这个软件%每次都会把它添加到那里。如果我删除它,然后再次将 tex 文件重新加载到其中,它会%再次添加它。

我的问题是,我是否可以更改上述定义中的某些内容Xsmall,以便添加这些内容%不会导致编译时出现问题? 某种技巧、选项或宏?

再次,我必须使用其他软件(它是 Scientific Word),但我还需要使用这个宏,并能够使用 tex live 编译我的文件。没有办法告诉 SW 不要像这样在行尾不断添加。我试过了。它每次%都会不断添加。%

这是文件列表

 article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size11.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
fancybox.sty    2010/05/15 1.4
fancyvrb.sty    2008/02/07
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)

Linux 上的 TL 2015。

答案1

感谢 Scientific Word 支持人员的帮助,他们为我的问题中的 Latex 问题提供了解决方法。我将其发布在这里,以防将来有人需要处理它。以下是答案

在封装的 TeX 字段后添加一个空格。末尾的 % 可抑制排版结果中通常不需要的空格。

所以我只需要在这里添加一个空格:

\begin{Xsmall}
test
\end{Xsmall} <----- ADD ONE SPACE HERE

现在科学词语不加一个%

案子了结。所以我得到了干净的编译。

答案2

我在使用 Sweave 时也遇到了类似的问题,在我添加行之后它被删除了

\usepackage{fancyvrb}
\usepackage{fvextra}

回到序言。

相关内容