我有以下等式:
$\neg(A \wedge \neg A) \vee (B \implies A)$ \\
$\neg(A \wedge \neg A) \vee (\neg B \vee A)$ \\
$\underbrace{\underbrace{(\neg A \vee A)}_\text{w} \vee (\neg B \vee A)}_\text{w}$
我想将它们围绕 ∨ ( \vee
) 符号对齐。
我尝试了以下操作:
\begin{align*}
\neg(A \wedge \neg A) &\vee (B \implies A) \\
\neg(A \wedge \neg A) &\vee (\neg B \vee A) \\
\underbrace{\underbrace{(\neg A \vee A)}_\text{w} &\vee (\neg B \vee A)}_\text{w}
\end{align*}
但它吐出了相当神秘的错误信息:
! Missing } inserted.
<inserted text>
}
l.73 \end{align*}
在这种情况下,第 73 行是我在这个问题中的示例代码的最后一行。
我认为问题可能是因为&
出现在 里面\underbrace
。是否可以仍然对齐这些方程并保留\underbrace
?
答案1
您可以使用以下方式执行此操作tikzmark
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark,decorations.pathreplacing,calligraphy}
\begin{document}
\begin{align*}
\neg(A \wedge \neg A) &\vee (B \implies A) \\
\neg(A \wedge \neg A) &\vee (\neg B \vee A) \\
\underbrace{\tikzmark{V1}(\neg A \vee A)}_\mathrm{w} &\vee (\neg B \vee A)\tikzmark{V2}
\end{align*}
\begin{tikzpicture}[remember picture,overlay]
\draw[decorate, decoration={calligraphic brace, mirror, amplitude=5pt}, line width=1.2pt]
([yshift=-4ex]{pic cs:V1}) --node[below=.5ex]{\scriptsize w} ([yshift=-4ex]{pic cs:V2});
\end{tikzpicture}
\end{document}
答案2
如果可以使用 LuaTeX,那么luamathalign
包可以优雅地解决这个问题。只需要&
在\AlignHere
里面替换 即可\underbrace
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{luamathalign}
\begin{document}
\begin{align*}
\neg(A \wedge \neg A) &\vee (B \implies A) \\
\neg(A \wedge \neg A) &\vee (\neg B \vee A) \\
\underbrace{\underbrace{(\neg A \vee A)}_\text{w} \AlignHere\vee (\neg B \vee A)}_\text{w}
\end{align*}
\end{document}
答案3
如果你可以使用 LuaLaTeX,那么这luamathalign
是最好的选择。这是一个修复版本,\underbrace
我使用定义的命令来避免与间距有关\ubrace
的缺点。\underbrace
第二个版本可与每个引擎运行。
\documentclass{article}
\usepackage{amsmath}
\usepackage{luamathalign} % for the first realization, requires LuaLaTeX
\newcommand{\ubrace}[2]{{\underbrace{#1}_{#2}}}
\begin{document}
\begin{align*}
\neg(A \wedge \neg A) &\vee (B \Rightarrow A) \\
\neg(A \wedge \neg A) &\vee (\neg B \vee A) \\
\ubrace{\ubrace{(\neg A \vee A)}{\text{w}}
\AlignHere \vee (\neg B \vee A)}{\text{w}}
\end{align*}
\begin{align*}
\neg(A \wedge \neg A) &\vee (B \Rightarrow A) \\
\neg(A \wedge \neg A) &\vee (\neg B \vee A) \\
\ubrace{(\neg A \vee A)}{\text{w}} & \vee (\neg B \vee A) \\[-3.5ex]
&% here the tricky part
\sbox{0}{$\displaystyle{}\vee (\neg B \vee A)$}
\makebox[\wd0][r]{%
$\displaystyle
\ubrace{\phantom{(\neg A \vee A)\vee(\neg B \vee A)}}{\text{w}}
$%
}
\end{align*}
\end{document}
请注意,这_\text{w}
只能偶然起作用,正确的语法是
_{\text{w}}