提问于:
浏览数:
1525
## 编译环境
操作系统
* [X] Windows 7/8/10
* [ ] macOS
* [ ] Linux
Tex发行版
* [ ] TexLive `年份`
* [X] MikTeX `版本号`
* [ ] CTeX
## 问题
如何让任意两个node根据各自某部分内容对齐?
比如:
```
\documentclass[10pt,a4paper, utf-8]{article}
\usepackage{
amsmath,
mathtools,
amsfonts,
amssymb,
tikz
}
\usetikzlibrary{
tikzmark,
positioning,
matrix,
}
\begin{document}
\begin{tikzpicture}[remember picture]
\node(a) [draw] {$A \subnode[draw]{sub-a}{\Delta} B \wedge C$};
\node(b) [draw,anchor=sub-b,below=1pt of sub-a]{$A \wedge C \subnode{sub-b}{\Delta} B$};
\end{tikzpicture}
\end{document}
```
上例中node a、 b的文本中皆含有符号“Delta”,
我希望让node a 和 node b 中的Delta位于同一竖直线,
以此对齐node a和node b。
通过tikzmark库可获取两个node中“Delta”的位置,
但我无法令node b的抛锚口为sub-b(即上文的`anchor=sub-b`),便无法将sub-b置于sub-a的正下方。
有没有什么通用的办法解决这个问题?
我有考虑过matrix、fit以及,但是太麻烦。
估计需要用到basic layer
另外:如何给node定义新的anchor?有必要定义新的shape吗?
1 回答
41
```tex
\documentclass{article}
\usepackage{amsmath, mathtools}
\begin{document}
\begin{align*}
\Aboxed{A &\Delta B \wedge C}\\
\Aboxed{A \wedge C &\Delta B}
\end{align*}
\end{document}
```
![](https://wenda.latexstudio.net/data/attach/201016/oIt4lrUg.png)
作者追问:2020-10-17 00:25
谢谢你抽空回答^__^
虽然我在问题中用数学公式举例,
但我希望看到的是更一般的结果:如果Delta位于一个分数中呢(比如分子/分母)?
TikZ中如何根据node text中的某个特定内容(比如此处的Delta)对齐多个node?
-
谢谢 – 温柔的大象 2020-10-18 11:54 回复
-
嗯 好的 谢谢OK – 温柔的大象 2020-10-17 00:43 回复
-
用tikz实现不现实,不亚于重新写个包了,而且我觉得没什么意义 – lichangkai 2020-10-17 00:32 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。