如何使用条件在编译时定义不同的 \begin 和 \end 环境

如何使用条件在编译时定义不同的 \begin 和 \end 环境

我只需要一点语法方面的帮助。我正在使用 tex4ht,在环境empheq中使用时出现错误align

我想在 pdflatex 和 htlatex 中构建这个 TeX 文件。我通常用\ifdefined\HCode它来有条件地编译东西。但在这种情况下,它不起作用。

我需要有条件地使用empheq或不使用,具体取决于是否使用 tex4ht 进行编译。

这是 MWE

\documentclass{article}
\usepackage{empheq}
\begin{document}

\ifdefined\HCode
\begin{align*}
\else
\begin{empheq}[box=\fbox]{align*}
\fi
%
\lambda_{spiral}  &  =-0.0551\\
\lambda_{rolling}  &  =-56.5025
%
\ifdefined\HCode
\end{align*}
\else
\end{empheq}
\fi

\end{document}

我试图避免在两个环境中重复所有方程式。下面这个可以工作

\documentclass{article}
\usepackage{empheq}
\begin{document}

\ifdefined\HCode
%
\begin{align*}
\lambda_{spiral}  &  =-0.0551\\
\lambda_{rolling}  &  =-56.5025
\end{align*}
%
\else
%
\begin{empheq}[box=\fbox]{align*}
\lambda_{spiral}  &  =-0.0551\\
\lambda_{rolling}  &  =-56.5025
\end{empheq}
%
\fi

\end{document}

我认为不应该像上面的第一种情况那样用条件来破坏环境?可能是因为 LaTeX 如何解析代码?我使用的是 TeX Live 2013。

答案1

使用以下方法获取条件环境的内容environ

\documentclass{article}
\usepackage{empheq,environ}
\NewEnviron{pdfORht}[3][]{%
  \ifdefined\HCode %htlatex
    \begin{#3}
      \BODY
    \end{#3}
  \else% pdflatex
    \begin{#2}[#1]{#3}
      \BODY
    \end{#2}
  \fi%
}
\begin{document}

\begin{pdfORht}[box=\fbox]{empheq}{align*}
  \lambda_{spiral}  &  =-0.0551 \\
  \lambda_{rolling}  &  =-56.5025
\end{pdfORht}

\end{document}

当然,你可以自己摆弄界面。

相关内容