为什么在对齐环境中不允许使用括号(用于界定范围)?

为什么在对齐环境中不允许使用括号(用于界定范围)?

我刚刚了解到,你可以使用括号来限定 的效果\tikzset。但在 align 环境中不允许这样做:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
    \begin{align}
        \tikzset{every node/.style={draw}}
        \tikz{\node {};} &= \text{Box}\\
        {
            \tikzset{every node/.style={fill}}
            \tikz{\node {};} &= \text{Filled box}\\
        }
        \tikz{\node {};} &= \text{Box}\\
        \tikz{\node {};} &= \text{Box}
    \end{align}
\end{document}

这会失败并出现很多错误,例如“对齐制表符放错位置”等。

遗憾的是,即使是解决方法在这里也不起作用:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
    \begin{align}
        \tikzset{every node/.style={draw}}
        \tikz{\node {};} &= \text{Box}\\
        \tikzset{every node/.style={fill}}
        \tikz{\node {};} &= \text{Filled box}\\
        \tikzset{every node/.style={draw}}
        \tikz{\node {};} &= \text{Box}\\
        \tikz{\node {};} &= \text{Box}
    \end{align}
\end{document}

在此处输入图片描述

注意最后一个节点没有被绘制。出了什么问题?

答案1

无论如何,&已经限制了范围。因此,即使从 OP MWE 中删除独立的两个括号,也不会绘制最后两个框。可能的简单解决方法:

任何一个

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
        \begin{align}
        \tikzset{every node/.style={draw}}
        \tikz{\node {};} &= \text{Box}\\
            \tikzset{every node/.style={fill}}
            \tikz{\node {};} &= \text{Filled box}\\
        \tikzset{every node/.style={draw}}\tikz{\node {};} &= \text{Box}\\
        \tikzset{every node/.style={draw}}\tikz{\node {};} &= \text{Box}
    \end{align}
\end{document}

或者

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\tikzset{every node/.style={draw}}
        \begin{align}
        \tikz{\node {};} &= \text{Box}\\
        \tikzset{every node/.style={fill}}
            \tikz{\node {};} &= \text{Filled box}\\
        \tikz{\node {};} &= \text{Box}\\
        \tikz{\node {};} &= \text{Box}
    \end{align}
\end{document}

均产生 盒子对齐

答案2

在一个align环境内——或者任何单元格被& 或分隔的环境中\\——每个单元格都完全独立于其他单元格。因此,设置或更改样式的指令必须在每个单元格内完成。

您可以通过插入代码来“拯救”您的解决方法示例

\tikzset{every node/.style={draw}}

紧接着最后一个\\

相关内容