我无法正确理解语法。我正在尝试使用下面的答案来帮助我。
如何使用条件在编译时定义不同的 \begin 和 \end 环境
我正在尝试为 tex4ht 与 pdflatex 设置环境。如果 tex4ht 正在运行,则环境将是
\begin{Verbatim}
.......
\end{Verbatim}
如果 pdflatex 正在运行,那么它将
\begin{Verbatim}[samepage,fontsize=\small,frame=single]
.......
\end{Verbatim}
我无法弄清楚 API 如何\NewEnviron
在[....]
这是 MWE
\documentclass{article}%
\usepackage{fancyvrb}
\usepackage{array}%for m option
\usepackage{environ}
\NewEnviron{X}[4][]{% takes 4 arguments, samepage,fontsize=..,frame=...,Verbatim
\ifdefined\HCode %htlatex
\begin{#4}
\BODY
\end{#4}
\else% pdflatex
\begin{#4}[#1,#2,#3] %is this right?
\BODY
\end{#4}
\fi%
}
\begin{document}
\begin{tabular}[c]{|m{4in}|m{2.5in}|}\hline
\textbf{Mathematica}
\begin{X}[samepage][fontsize=\small][frame=single]{Verbatim} %is this right?
{(10 E^(-t/10) HeavisideTheta[t]
Sin[(3 Sqrt[11] t)/10])/(3 Sqrt[11])} some Verbatim stuff
\end{X}
&
some text
\\\hline
\end{tabular}
\end{document}
以上内容应变为以下内容(如果 pdflatex 正在运行)
\begin{tabular}[c]{|m{4in}|m{2.5in}|}\hline
\textbf{Mathematica}
\begin{Verbatim}[samepage,fontsize=\small,frame=single]
{(10 E^(-t/10) HeavisideTheta[t]
Sin[(3 Sqrt[11] t)/10])/(3 Sqrt[11])}
\end{Verbatim}
&
some text
\\\hline
\end{tabular}
如果 tex4ht 正在运行,它应该变成
\begin{tabular}[c]{|m{4in}|m{2.5in}|}\hline
\textbf{Mathematica}
\begin{Verbatim}
{(10 E^(-t/10) HeavisideTheta[t]
Sin[(3 Sqrt[11] t)/10])/(3 Sqrt[11])}
\end{Verbatim}
&
some text
\\\hline
\end{tabular}
我尝试如下调用它
\begin{X}[samepage,fontsize=\small,frame=single]{Verbatim}
但这没有帮助。我一直收到语法错误Missing $ inserted \end{X}
等等extra }
......
也尝试过
\begin{X}[samepage],[fontsize=\small],[frame=single]{Verbatim}
设置此环境的正确语法是什么?使用 texlive 2013 和 Miktex
答案1
您不能使用 定义逐字环境\NewEnviron
,因为它们会吸收环境的内容作为参数,因此无法执行逐字所必需的类别代码更改。
有一种更简单的方法:用两种不同的方式定义环境,而不是一种改变行为的环境。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{array}%for m option
\ifdefined\HCode % tex4ht
\DefineVerbatimEnvironment{X}{Verbatim}{}
\else
\DefineVerbatimEnvironment{X}{Verbatim}{samepage,fontsize=\small,frame=single}
\fi
\begin{document}
\begin{tabular}[c]{|m{3in}|m{1in}|}\hline
\textbf{Mathematica}
\begin{X}
{(10 E^(-t/10) HeavisideTheta[t]
Sin[(3 Sqrt[11] t)/10])/(3 Sqrt[11])}
\end{X}
&
some text\\
\hline
\end{tabular}
\end{document}