Tikz中如何让任意两个node根据各自某部分内容对齐?

2020-10-16 21:43发布

## 编译环境 操作系统 * [X] Windows 7/8/10 * [ ] macOS * [ ] Linux Tex发行版 * [ ] TexLive `年份` * [X] MikTeX `版...

## 编译环境 操作系统 * [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条回答
lichangkai - latex爱好者
2020-10-17 00:17 .采纳回答
```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:17

谢谢你抽空回答^__^

虽然我在问题中用数学公式举例,

但我希望看到的是更一般的结果:如果Delta位于一个分数中呢(比如分子/分母)?

TikZ中如何根据node text中的某个特定内容(比如此处的Delta)对齐多个node?

一周热门 更多>