创建 Tikz 节点时出现无法解释的线间隙

创建 Tikz 节点时出现无法解释的线间隙

我正在尝试设计一个有两个节点的图表,其中一个节点位于另一个节点下方——相当简单。然而,我发现,对于第二个节点,有一个很大的换行间隙,而代码中没有考虑到这一点。下面是一个最小示例和相应的编译。

\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}

在此处输入图片描述

相关内容