好的,所以我的问题是这样的。我有这个代码(前言包含一个 tikz、graphicx 和 tikz 定位库的包)。
\documentclass[11pt]{article}
\usepackage{tikz, graphicx, geometry}
\geometry{margin=1in}
\usetikzlibrary{positioning}
\renewcommand{\baselinestretch}{1.4}
\begin{document}
\begin{figure}[h]\centering
\begin{tikzpicture}[round/.style={circle, draw=black!80, fill=black!10, very thick, minimum size=5mm}]
% Nodes
\node[round] (a) {a};
\node[round] (f) [right=of a] {f};
\node[round] (e) [below=of a] {e};
\node[round] (b) [below=of f] {b};
\node[round] (c) [right=of f] {c};
\node[round] (g) [below=of c] {g};
\node[round] (h) [right=of c] {h};
\node[round] (d) [right=of g] {d};
% Lines
\draw[very thick, =] (a.east) -- (f.west);
\draw[very thick, =] (f.east) -- (c.west);
\draw[very thick, =] (c.east) -- (h.west);
\draw[very thick, =] (a.south) -- (e.north);
\draw[very thick, =] (e.east) -- (b.west);
\draw[very thick, =] (b.east) -- (g.west);
\draw[very thick, =] (g.east) -- (d.west);
\draw[very thick, =] (f.south) -- (b.north);
\draw[very thick, =] (c.south) -- (g.north);
\draw[very thick, =] (h.south) -- (d.north);
\draw[very thick, =] (a.east) -- (f.west);
\draw[very thick, =] (a.east) -- (f.west);
\end{tikzpicture}
\end{figure}
\end{document}
基本上,我想修复弯曲的线条并使其更直。如果有的话,我更喜欢一种简单的方法来解决这个问题...
PS. 最后的某些代码是复制粘贴的。基本上这些行是为了加快任务速度而复制粘贴的,所以请忽略最后两行。(我不知道如果我删除它们是否有助于理解这一点,但请告诉我。)编辑:抱歉,我指的是这些行
\draw[very thick, =] (a.east) -- (f.west);
\draw[very thick, =] (a.east) -- (f.west);
就在这里结束吧。。抱歉造成误解。我不确定是否应该完全包括它们。
附言:无法复制粘贴完整代码。这是学校作业的一部分。但我想我已经掌握了主要内容。
编辑 2:完整的图表应该看起来有点像这样(这是我从教科书上取下来的版本,用油漆重新绘制,但我希望它看起来更有吸引力)。
基本上,油漆上的线条更糟糕。所以我第一次尝试使用 tikz 来添加它们。
答案1
不如好的 cfr 答案简洁...而是使用链图并定义更大的最小节点尺寸。
\documentclass[tikz,
border=3mm
]{standalone}
\usetikzlibrary{chains}
\makeatletter
\tikzset{suppress join/.code={\def\tikz@after@path{}}}
\makeatother
\begin{document}
\begin{tikzpicture}[
start chain = A going right,
round/.style = {circle, draw=black!80, fill=black!10, very thick,
minimum size=7mm,
on chain, join=by {-, very thick}},
]
% Nodes
\begin{scope}[every node/.style = {round}]
\node (a) {a};
\node (f) {f};
\node (c) {c};
\node (h) {h};
\node (e) [suppress join,below=of a] {e};
\node (b) {b};
\node (g) {g};
\node (d) {d};
\end{scope}
% Lines
\draw[very thick] (a) -- (e)
(a) to [bend left] (h)
(f) -- (b)
(c) -- (g)
(h) -- (d)
(e) to [bend right] (d);
\end{tikzpicture}
\end{document}
答案2
您只需增加 即可minimum size
。您还可以设置统一的text height
和text depth
,同时将字母与基线对齐,如下所示。我不明白您所说的删除代码片段是什么意思,所以我只做了一个简单的示例来做同样的事情。更详细的代码的原理是相同的:只需为文本设置标准高度/深度即可。
\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
\graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex} ]
{
a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d
};
\end{tikzpicture}
\end{document}
如果您希望节点具有相同的大小,请添加标准text width
并将内容居中。
\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
\graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex, text width=1.5ex, align=center} ]
{
a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d
};
\end{tikzpicture}
\end{document}
编辑
请注意,上述原则与节点之间如何绘制或绘制什么无关。只是显示添加text height=<>, text depth=<>, text width=<>, align=center
对节点对齐的影响。
不过,你可以使用我上面使用的图形语法添加曲线。例如,
\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
\graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex, text width=1.5ex, align=center} ]
{
a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d , a --[bend left] h , d --[bend left] e
};
\end{tikzpicture}
\end{document}