我刚刚了解到,你可以使用括号来限定 的效果\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}}
紧接着最后一个\\
。