我有两个迷你页面,其中一个包含一个 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}
我可以将 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}
但那大约是低于预期基线的半行文本。奇怪的是,当我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}
我如何设置基线以使两个框在顶部齐平?
答案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
将基线移动到\fbox
es 的顶部。
\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}