![对齐环境和 TikZ 之间有冲突吗?](https://linux22.com/image/243541/%E5%AF%B9%E9%BD%90%E7%8E%AF%E5%A2%83%E5%92%8C%20TikZ%20%E4%B9%8B%E9%97%B4%E6%9C%89%E5%86%B2%E7%AA%81%E5%90%97%EF%BC%9F.png)
以下代码错误呈现多行标签:
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{aligned}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (0,2) {B};
\draw (A) to node [anchor=east, align=right] {my\\multi-line\\label} (B);
\end{tikzpicture}
\end{aligned}
\end{equation}
\end{document}
这全是环境的错aligned
——然而,环境对于将方程式编号排版到图表的正确位置是必要的。
那么:这是一个奇怪的交互错误吗?可以解决吗?或者是否有一种黑客技术可以让我使用不同的方法对齐图片以避免这个奇怪的问题?或者我的 TikZ 有问题,或者这不是制作多行标签的正确方法。
代码截图如上:
没有对齐环境的屏幕截图:
答案1
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
\tabular{r|} \multicolumn{1}{r@{}}{\makebox[0pt]{A}}\\
my \\ multi-line \\ label \\
\multicolumn{1}{r@{}}{\makebox[0pt]{B}}
\endtabular
\end{align}
\end{document}
答案2
只需aligned
改为gathered
:
\begin{equation}
\begin{gathered}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (0,2) {B};
\draw (A) to node [anchor=east, align=right] {my\\multi-line\\label} (B);
\end{tikzpicture}
\end{gathered}
\end{equation}
实际上,gathered
(以及aligned
)会改变行距,因此也许您更喜欢使用gathered*
定义为
\newenvironment{gathered*}{\gathered\openup-1\jot}{\endgathered}
实际上,一个更简单的解决方案可能是说
\begin{equation}
\begin{tikzpicture}[baseline=(current bounding box.center)]
\node (A) at (0,0) {A};
\node (B) at (0,2) {B};
\draw (A) to node [anchor=east, align=right] {my\\multi-line\\label} (B);
\end{tikzpicture}
\end{equation}
答案3
将“我的多行标签”“装箱”可以吗?这里的装箱是指将内容放在 中tabular
。
\documentclass{article}
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{equation}
\begin{aligned}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (0,5) {B};
\draw (A) to node [anchor=east] {\begin{tabular}{r@{}}my\\[\jot]multi-line\\[\jot]label\end{tabular}} (B);
\end{tikzpicture}
\end{aligned}
\end{equation}
\end{document}
使用 的r@{}
列规范可tabular
消除右侧的列分隔,从而提供与 类似的对齐方式align=right
。\\[\jot]
展开tabular
行,类似于更新\arraystretch
,但允许逐行控制。 如果需要,请使用它。