我需要使用\ifdefined
insidealign
来告诉 latex 对 pdf 和 tex4ht 使用不同的代码。但它给出了一个错误。
有没有什么办法可以解决这个问题(除了把ifdefined
所有东西都放在外面,这会让事情变得复杂)。
这是 MW
\documentclass{article}
\usepackage{amsmath}
\usepackage{color}
\usepackage{array}
\begin{document}
\begin{align*}
R_{2} = R_{2}-R_{1} &\Longrightarrow\hspace{5pt}
\ifdefined\HCode
\left[\begin{array}{@{}ccc|c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]
\else
\left[
\begin{array}{@{}ccc!{\color{red}\vline width 0.6pt}c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]
\fi
\end{align*}
\end{document}
编译时lualatex
出错
(/usr/local/texlive/2020/texmf-dist/tex/latex/microtype/mt-PalatinoLinotype.cfg) (/usr/local/texlive/2020/texmf-dist/tex/latex/microtype/mt-msa.cfg) (/usr/local/texlive/2020/texmf-dist/tex/latex/microtype/mt-msb.cfg))
! Incomplete \ifx; all text was ignored after line 21.
<inserted text>
\fi
<*> foo3.tex
?
TL 2020
答案1
您可以将其放入一个组中:
\documentclass{article}
\usepackage{amsmath}
\usepackage{color}
\usepackage{array}
\begin{document}
\begin{align*}
R_{2} = R_{2}-R_{1} &\Longrightarrow\hspace{5pt}
{\ifdefined\HCode
\left[\begin{array}{@{}ccc|c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]
\else
\left[
\begin{array}{@{}ccc!{\color{red}\vline width 0.6pt}c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]
\fi}
\end{align*}
\end{document}
但我不明白为什么你在每个分支中重复这个矩阵,
\documentclass{article}
\usepackage{amsmath}
\usepackage{color}
\usepackage{array}
\begin{document}
\begin{align*}
R_{2} = R_{2}-R_{1} &\Longrightarrow\hspace{5pt}
\left[
\begin{array}{@{}ccc!{\ifdefined\HCode |\else\color{red}\vline width 0.6pt\fi}c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]
\end{align*}
\end{document}
答案2
原始\if
命令很难用。您通常必须确保在执行分支之前找到\else
和。使用etoolbox 之类的用户命令可以隐藏这一点:\fi
\ifdef
\documentclass{article}
\usepackage{amsmath}
\usepackage{color}
\usepackage{array}
\usepackage{etoolbox}
\begin{document}
\begin{align*}
R_{2} = R_{2}-R_{1} &\Longrightarrow\hspace{5pt}
\ifdef{\HCode}
{\left[\begin{array}{@{}ccc|c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]}
{\left[
\begin{array}{@{}ccc!{\color{red}\vline width 0.6pt}c@{}}
0&0&4&0\\
0&0&0&0\\
0&0&2&0
\end{array}
\right]}
\end{align*}
\end{document}