在 `TikZ` 环境中使用 `\underbrace`

在 `TikZ` 环境中使用 `\underbrace`

以下代码呈现了具有三个顶点和三个边的图形。(没什么特别的。)在第一个顶点和第二个顶点之间,我想传达可能还有n - 1更多顶点。第二个“显示”的顶点实际上可能是第 n 个顶点。我在使用该\underbrace命令时收到错误消息。我在节点命令中使用它。我认为这在节点命令中是允许的。可以\mathrlap在节点命令中使用吗?其中任何一个都应该在数学模式下编码吗?

我可能想在括号下写一段更长的文字 - 比如“这里可能还有 $n+1$ 个顶点,但这是我知道的,也是你自己发现的。”我该如何将其排版成两行或三行?

在图中,当连续“显示”顶点之间可能有更多图形时,关于它们之间的边的约定是什么?我是否在每个顶点上绘制边的一部分?我是否在两个“显示”顶点之间的中间排版椭圆?我是否在“显示”顶点之间排版一对椭圆 - 每个顶点旁边一个椭圆?

\documentclass{amsart}
\usepackage{amsmath}
\usepackage{mathtools} %Loads amsmath


\usepackage{tikz}
\usetikzlibrary{calc,intersections}


\begin{document}

\begin{tikzpicture}

\path (0,0) coordinate (vertex_1) (3,0) coordinate (vertex_n) (5,0) coordinate (vertex_n+1);
\draw[fill] (vertex_1) circle (1.5pt);
\draw[fill] (vertex_n) circle (1.5pt);
\draw[fill] (vertex_n+1) circle (1.5pt);

\draw (vertex_1) -- ($(vertex_1) +(0.75,0)$);
\draw (vertex_n) -- ($(vertex_n) +(-0.75,0)$) -- (vertex_n+1);

\coordinate (midpoint) at ($($(vertex_1) +(0.75,0)$)!0.5!($(vertex_n) +(-0.75,0)$)$);
\coordinate (brace) at ($(midpoint) +(0,-0.75)$);
%\node at (brace){\mathrlap{\underbrace{\phantom{n + 1\text{ more vertices}}}_{text}}};

\end{tikzpicture}


\end{document}

答案1

在第一个顶点和第二个顶点之间,我想表示可能还有 n - 1 个顶点。第二个“显示”的顶点实际上可能是第 n 个顶点。我使用 \underbrace 命令时收到错误消息。我在节点命令中使用它。我认为这在节点命令中是允许的。\mathrlap 可以在节点命令中使用吗?其中任何一个都应该在数学模式下编码吗?

您需要将\underbrace等放入数学模式中才能使其工作(我不知道这是否是预期的输出)

\documentclass{amsart}
\usepackage{amsmath}
\usepackage{mathtools} %Loads amsmath
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
\path (0,0) coordinate (vertex_1) (3,0) coordinate (vertex_n) (5,0) coordinate (vertex_n+1);
\draw[fill] (vertex_1) circle (1.5pt);
\draw[fill] (vertex_n) circle (1.5pt);
\draw[fill] (vertex_n+1) circle (1.5pt);
\draw (vertex_1) -- ($(vertex_1) +(0.75,0)$);
\draw (vertex_n) -- ($(vertex_n) +(-0.75,0)$) -- (vertex_n+1);
\coordinate (midpoint) at ($($(vertex_1) +(0.75,0)$)!0.5!($(vertex_n) +(-0.75,0)$)$);
\coordinate (brace) at ($(midpoint) +(0,-0.75)$);
\node at (brace){$\mathrlap{\underbrace{\phantom{n + 1\text{ more vertices}}}_{text}}$};
\end{tikzpicture}
\end{document}

在此处输入图片描述


我可能想在括号下写一段更长的文字 - 比如“这里可能还有 $n+1$ 个顶点,但这是我知道的,也是你自己发现的。”我该如何将其排版成两行或三行?

我推荐的具有自动换行功能的版本:

\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
\path (0,0) coordinate (vertex_1) (3,0) coordinate (vertex_n) (5,0) coordinate (vertex_n+1);
\draw[fill] (vertex_1) circle (1.5pt);
\draw[fill] (vertex_n) circle (1.5pt);
\draw[fill] (vertex_n+1) circle (1.5pt);
\draw (vertex_1) -- ($(vertex_1) +(0.75,0)$);
\draw (vertex_n) -- ($(vertex_n) +(-0.75,0)$) -- (vertex_n+1);
\coordinate (midpoint) at ($($(vertex_1) +(0.75,0)$)!0.5!($(vertex_n) +(-0.75,0)$)$);
\node (x) at (midpoint) {$\cdots$};
\node[draw,font=\footnotesize,text width=3cm] (callout) at (2,-2) {$n+1$ more vertices may be here but that is for me to know and you to find out.};
\draw[->] (callout) -- (x);
\end{tikzpicture}
\end{document}

在此处输入图片描述

或者手动换行:

\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
\path (0,0) coordinate (vertex_1) (3,0) coordinate (vertex_n) (5,0) coordinate (vertex_n+1);
\draw[fill] (vertex_1) circle (1.5pt);
\draw[fill] (vertex_n) circle (1.5pt);
\draw[fill] (vertex_n+1) circle (1.5pt);
\draw (vertex_1) -- ($(vertex_1) +(0.75,0)$);
\draw (vertex_n) -- ($(vertex_n) +(-0.75,0)$) -- (vertex_n+1);
\coordinate (midpoint) at ($($(vertex_1) +(0.75,0)$)!0.5!($(vertex_n) +(-0.75,0)$)$);
\node (x) at (midpoint) {$\cdots$};
\node[draw,font=\footnotesize,align=center] (callout) at (2,-2) {$n+1$ more vertices may\\be here but that is for me to\\know and you to find out.};
\draw[->] (callout) -- (x);
\end{tikzpicture}
\end{document}

在此处输入图片描述


在图中,当连续“显示”顶点之间可能有更多图形时,关于它们之间的边的约定是什么?我是否在每个顶点上绘制边的一部分?我是否在两个“显示”顶点之间的中间排版椭圆?我是否在“显示”顶点之间排版一对椭圆 - 每个顶点旁边一个椭圆?

该问题不属于帮助中心定义的 TeX、LaTeX 或相关排版系统的范围。

答案2

\documentclass{amsart}
\usepackage{amsmath}
\usepackage{mathtools} %Loads amsmath


\usepackage{tikz}
\usetikzlibrary{calc,intersections}


\begin{document}

\begin{tikzpicture}

\path (0,0) coordinate (vertex_1) (3,0) coordinate (vertex_n) (5,0) coordinate (vertex_n+1);
\draw[fill] (vertex_1) circle (1.5pt);
\draw[fill] (vertex_n) circle (1.5pt);
\draw[fill] (vertex_n+1) circle (1.5pt);

\draw (vertex_1) -- ($(vertex_1) +(0.75,0)$);
\draw (vertex_n) -- ($(vertex_n) +(-0.75,0)$) -- (vertex_n+1);

\coordinate (midpoint) at ($(vertex_1)!0.5!(vertex_n)$);
\coordinate (center_of_brace) at ($(midpoint) +(0,-0.75)$);
\node[font=\footnotesize, anchor=north, inner sep=0, align=center] at (center_of_brace){\mbox{$n + 1$ more} \\
{\mbox{vertices}}};

\end{tikzpicture}

\end{document}

相关内容