调整 tikzpicture 基线使其齐平

调整 tikzpicture 基线使其齐平

我有两个迷你页面,其中一个包含一个 tikz 图片。我希望它们具有相同的基线。即我希望迷你页面在顶部齐平。

默认情况下不会发生这种情况:

\documentclass{article} 
\usepackage{amssymb,tikz}
\begin{document}
\fbox{\begin{minipage}[t]{0.22\textwidth}
\textbf{TEXT}
\end{minipage}}
\fbox{
\begin{tikzpicture}
\draw(0,0)node{$\square$};
\end{tikzpicture}
}
\end{document}

微波能量吸收 1

我可以将 tikz 图片的基线设置为(current bounding box.north)

\documentclass{article} 
\usepackage{amssymb,tikz}
\begin{document}
\fbox{\begin{minipage}[t]{0.22\textwidth}
\textbf{TEXT}
\end{minipage}}
\fbox{
\begin{tikzpicture}[baseline=(current bounding box.north)]
\draw(0,0)node{$\square$};
\end{tikzpicture}
}
\end{document}

微波辐射计 2

但那大约是低于预期基线的半行文本。奇怪的是,当我TEXT使用 将 的大小调整得更大时\huge,tikz 图片的基线似乎向下移动以保持此属性。即使 tikz 图片首先出现,也会发生这种情况:

\documentclass{article} 
\usepackage{amssymb,tikz}
\begin{document}
\fbox{
\begin{tikzpicture}[baseline=(current bounding box.north)]
\draw(0,0)node{$\square$};
\end{tikzpicture}
}
\fbox{\begin{minipage}[t]{0.22\textwidth}
\textbf{TEXT}
\end{minipage}}
\end{document}

微波辐射计 3

我如何设置基线以使两个框在顶部齐平?

答案1

你可以完全绕过 tikz 图片基线。将图片放在小页面中,并使用一些无用文本为小页面建立基线:

\documentclass{article} 
\usepackage{amssymb,tikz}
\begin{document}
\fbox{\begin{minipage}[t]{0.22\textwidth}
\vspace{0mm}%For alignment
\textbf{TEXT}
\end{minipage}}
\fbox{
\begin{minipage}[t]{0.05\textwidth}
\vspace{0mm}%For alignment
\begin{tikzpicture}
\draw(0,0)node{$\square$};
\end{tikzpicture}
\end{minipage}
}
\end{document}

平均能量损失

这样做的缺点是 fbox 的宽度现在由 minipage(这里是0.05\textwidth)而不是 tikzpicture 决定。但是垂直对齐是完美的,无需摆弄魔法数字或任何花哨的东西。

答案2

我的第一次尝试失败了,因为 的高度TEXT不是 的高度\strutbox

有两个可靠的解决方案。第一,使用\hrule将第一条基线移动到小页面的顶部。第二,使用\raisebox将基线移动到\fboxes 的顶部。

\documentclass{article} 
\usepackage{amssymb,tikz}
\begin{document}
\fbox{\begin{minipage}[t]{0.22\textwidth}
\hrule height0pt
\textbf{TEXT}
\end{minipage}}
\fbox{%
  \begin{tikzpicture}[baseline=(current bounding box.north)]
  \draw(0,0)node{$\square$};
  \draw[red] (current bounding box.south west) rectangle (current bounding box.north east);
  \end{tikzpicture}%
}\hfill\llap{\rule{\textwidth}{0.5pt}}% show baseline

\raisebox{-\height}{\fbox{\begin{minipage}[t]{0.22\textwidth}
\textbf{TEXT}
\end{minipage}}}
\raisebox{-\height}{\fbox{%
  \begin{tikzpicture}
  \draw(0,0)node{$\square$};
  \end{tikzpicture}%
}}\hfill\llap{\rule{\textwidth}{0.5pt}}% show baseline
\end{document}

演示

答案3

您的问题上下文未知。解决方案显然取决于您的 的大小tikzpicture。在特定情况下,如问题中所述,我猜这应该有效:

\documentclass[border=3.141592]{standalone}
\usepackage{amssymb}
\usepackage{tikz}
\usepackage{lipsum}


\begin{document}
\begin{tikzpicture}[baseline=-0.75ex]
\node {$\square$};
\end{tikzpicture}
%
\begin{minipage}[t]{0.44\textwidth}
\textbf{TEXT} \lipsum[1][1-3]
\end{minipage}
\end{document}

在此处输入图片描述

编辑:

更大的例子tikzpicture

\documentclass[border=3.141592]{standalone}
\usepackage{amssymb}
\usepackage{tikz}

\usepackage{lipsum}

\begin{document}
\begin{tikzpicture}[baseline={([yshift=-1.6ex] current bounding box.north)}]
\node[draw, minimum size=12mm] {$\blacksquare$ $\blacksquare$};
\end{tikzpicture}
%
\begin{minipage}[t]{0.44\textwidth}
\textbf{TEXT} \lipsum[1][1-3]
\end{minipage}

在此处输入图片描述

但是,第一个例子仍然让我想起一些带有方形符号的列表。例如:

\documentclass[border=3.141592, varwidth]{standalone}
\usepackage{amssymb}
\usepackage{enumitem}

\usepackage{lipsum}

\begin{document}
\begin{itemize}[label=$\square$]
\item   \textbf{TEXT} \lipsum[1][1-3]
\end{itemize}
\end{document}

在此处输入图片描述

相关内容