tikz:为节点设置适当的x值

2024-05-03

这个问题源于这个问题here https://stackoverflow.com/questions/2772972/latex-curly-braces-outside-math

我想生成一个跨越一些文本行的大括号。 问题是我必须手动对齐 x 坐标,这不是一个干净的解决方案。

目前我使用

\begin{frame}{Example}

\begin{itemize}
\item The long Issue 1
\tikz[remember picture] \node[coordinate,yshift=0.7em] (n1) {}; \\
spanning 2 lines


\item Issue 2
  \tikz[remember picture] \node[coordinate, xshift=1.597cm] (n2) {};
\item Issue 3

\end{itemize}

\visible<2->{
\begin{tikzpicture}[overlay,remember picture]
  \draw[thick,decorate,decoration={brace,amplitude=5pt}]
        (n1) -- (n2) node[midway, right=4pt] {One and two are cool};
\end{tikzpicture}
 } % end visible

\end{frame}

这会产生所需的结果:

令人不满意的是,我必须通过反复试验(或多或少)计算出 1.597cm 的 xshift 值

如果没有 xshift 参数,结果是:

我想有一种优雅的方法可以避免显式的 xshift 值。

恕我直言,最好的方法是计算两个节点的最大 x 值并使用它(正如已经建议的那样)Geoff https://stackoverflow.com/users/310165/geoff)

但是,如果能够显式定义两个节点的绝对 x 值,同时保留其当前 y 值,那就已经非常方便了。这将避免调整小数点后第三位以确保大括号看起来垂直的繁琐过程。


这需要\usetikzlibrary{calc}。不过,可能有一种更清洁的方法。

去除 ”xshift“来自节点n2然后使用:

\begin{tikzpicture}[overlay,remember picture]
  \path (n2) -| node[coordinate] (n3) {} (n1);
  \draw[thick,decorate,decoration={brace,amplitude=5pt}]
        (n1) -- (n3);
  \node[right=4pt] at ($(n1)!0.5!(n3)$) {One and two are cool};
\end{tikzpicture}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tikz:为节点设置适当的x值 的相关文章

随机推荐