## 编译环境 操作系统 * [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 回答1

40
```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 回复

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。