我正在尝试设计一个有两个节点的图表,其中一个节点位于另一个节点下方——相当简单。然而,我发现,对于第二个节点,有一个很大的换行间隙,而代码中没有考虑到这一点。下面是一个最小示例和相应的编译。
\documentclass{beamer}
\usepackage{tikz}
\usepackage{fontawesome5}
\usepackage{fontspec}
\usetikzlibrary{shapes, arrows.meta, positioning}
\tikzstyle{blurb}=[rectangle, draw = black, fill = black!10, very thick, rounded corners, align=center, text width = 8em]
\usetheme{Berlin}
\usecolortheme{beaver}
\begin{document}
\frame{\titlepage}
\begin{frame}[fragile]
\frametitle{title}
\begin{center}
\begin{tikzpicture}
\node [blurb] (foobar) {
\textbf{foobar}
\begin{center}
\begin{minipage}{2em}
\centering
\huge{\faFile*[regular]}
\end{minipage}
\hspace{0.1em}
\begin{minipage}{5em}
\small{Documents \& Papers}
\end{minipage}
\begin{minipage}{2em}
\centering
\huge{\faSearch{}}
\end{minipage}
\hspace{0.1em}
\begin{minipage}{5em}
\small{Search Queries}
\end{minipage}
\end{center}
};
\node [blurb, below = 1em of foobar] (foobar1) {
\textbf{foobar}
\begin{center}
\begin{minipage}{2em}
\centering
\huge{\faFile*[regular]}
\end{minipage}
\hspace{0.1em}
\begin{minipage}{5em}
\small{Documents \& Papers}
\end{minipage}
\begin{minipage}{2em}
\centering
\huge{\faSearch{}}
\end{minipage}
\hspace{0.1em}
\begin{minipage}{5em}
\small{Search Queries}
\end{minipage}
\end{center}
};
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
如您所见,除了定位之外,这两个节点的代码完全相同,但底部节点\textbf{Foobar}
有间隙,而上部节点没有。确切的线宽并不重要,因为两个节点的线宽应该相同。有人知道在哪里可以找到发生这种情况的原因吗?
答案1
从下面的简化示例中可以看出,第一个节点中的“间隙”小于其他两个节点中的“间隙”,并且“间隙”似乎代表了跳行。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\def\mytext{%
\begin{center}
\Huge X
\end{center}
}
\begin{center}
% \leavevmode
\begin{tikzpicture}[every node/.style={draw, text width=8em}]
\node (a) {\mytext};
\node (b) at (4,0) {\mytext};
\node (c) at (8,0) {\mytext};
\foreach \i in {a,b,c}
\fill[blue] (\i.base) circle (2pt);
\end{tikzpicture}
\end{center}
\end{document}
用 替换center
外部环境tikzpicture
可以\centering
解决问题。由于center
环境定义为
\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}
我试过\leavevmode
在之前添加\begin{tikzpicture}
,并且它对我的简化示例和您的原始示例都有效。
除了,这里尝试使用tabular
环境重建节点内容:
\documentclass{beamer}
\usepackage{tikz}
\usepackage{fontawesome5}
\usepackage{fontspec}
\usepackage{array}
\usetikzlibrary{shapes, arrows.meta, positioning}
\tikzstyle{blurb}=[rectangle, draw = black, fill = black!10, very thick, rounded corners, align=center, text width = 8em]
\usetheme{Berlin}
\usecolortheme{beaver}
\begin{document}
\frame{\titlepage}
\begin{frame}[fragile]
\frametitle{title}
\begin{center}
\begin{tikzpicture}
\node[blurb] (foobar) {%
\begin{tabular}{@{} >{\huge}l @{\enspace} b{5em} @{}}
\multicolumn{2}{c}{\textbf{foobar}} \\
\faFile*[regular] & Documents \& Papers \\
\faSearch & Search Queries \\
\end{tabular}%
};
\node[blurb, below=1em of foobar] {%
\begin{tabular}{@{} >{\huge}l @{\enspace} b{5em} @{}}
\multicolumn{2}{c}{\textbf{foobar}} \\
\faFile*[regular] & Documents \& Papers \\
\faSearch & Search Queries \\
\end{tabular}%
};
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}