对齐节点和标签 tikz

对齐节点和标签 tikz

我正在尝试左对齐单独的 tikzpictures。我正在使用 为这些图片生成标记R。将有超过 500 张这样的图片;因此,我想避免任何subfigure选项。我试过align=leftbaselinetext width并尝试了本网站上提供的许多其他解决方案,但我无法弄清楚如何对齐所有单个图片的第一个左节点。如果节点对齐,则标签文本对齐无关紧要。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\threecircles}[3]{
\begin{tikzpicture}
\node [circle,double,draw=gray,label=below:#1,anchor=west,align=flush left,text width = 0.5em] at (0,0) (first) {};
\node [circle,double,draw=gray,label=below:#2,align=flush left,text width = 0.5em,right=5cm of first] (second) {};
\node [circle,double,draw=gray,label=below:#3,align=flush left,text width = 0.5em, right=5cm of second] (third) {};
\draw [line width=1mm, gray] (first) -- (second) -- (third);
\end{tikzpicture}}

\begin{document}
\center
\threecircles{A}{B}{C}\hspace*{\fill}\\
\threecircles{Dasdsadsasa}{Easdsadsad}{Fasdsad}\hspace*{\fill}\\
\threecircles{John Smith}{Craig Smith}{Jenny Smith}\hspace*{\fill}
\end{document}

我明白了:在此处输入图片描述

我希望看到所有节点垂直对齐。

答案1

显然,您遇到问题的部分原因是第一个(和最后一个)标签的长度不同,这导致 s 的tikzpicture宽度不同。一种可能的解决方法是将第一个和最后一个标签设置在零宽度框中,并将 s 居中tikzpicture。当然,这样做的一个问题是第一个和最后一个标签可能会延伸到边距中。

\documentclass{article}
\usepackage{showframe} % to indicate text area
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\threecircles}[3]{% <- you need this to avoid a spurious space
\begin{tikzpicture}[circlenode/.style={circle,double,draw=gray,text width=0.5em}]
% note \makebox[0pt][c]{#}
\node [circlenode,label=below:{\makebox[0pt][c]{#1}}]  (first) {};
\node [circlenode,label=below:#2,right=5cm of first] (second) {};
\node [circlenode,label=below:{\makebox[0pt][c]{#3}},right=5cm of second] (third) {};
\draw [line width=1mm, gray] (first) -- (second) -- (third);
\end{tikzpicture}}

\begin{document}
\centering
\threecircles{A}{B}{C}

\threecircles{Dasdsadsasa}{Easdsadsad}{Fasdsad}

\threecircles{John Smith}{Craig Smith}{Jenny Smith}
\end{document}

在此处输入图片描述

相关内容