垂直对齐问题

垂直对齐问题

我正在尝试绘制一个标注,i其左侧有一个很大的标注,然后是一堆文本填充大部分正文。以下代码几乎作品:

\documentclass[a4paper,oneside]{article}

\usepackage{xcolor}
\definecolor{Info}{rgb}{0.9,0.5,0.0}
\usepackage{tikz}
\usepackage{anyfontsize}
\usepackage{environ}
\NewEnviron{Note}%
{
  \begin{center}
    \begin{tikzpicture}
      \node[rectangle, rounded corners=15pt, inner sep=15pt, fill=Info](box){%
        \begin{minipage}{0.9\textwidth}
          \color{white}
          \mbox{\fontsize{40}{40}\selectfont$i$}
          \hfill
          \begin{minipage}{0.95\textwidth}
            \bfseries\BODY
          \end{minipage}
        \end{minipage}};
    \end{tikzpicture}
  \end{center}
}

\begin{document}
\begin{Note}
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test.
\end{Note}
\end{document}

但它呈现的效果如下:

示例图像

我不确定 TeX 实际上将其与什么对齐。发生了什么事?

无论如何, 的位置i实际上看起来不错; 只是正文似乎不知何故放在了错误的位置。 我不知道是什么在移动它。

那么我该如何解决这个问题呢?我接受将其i固定在顶部或垂直居中,只要正文最终出现在正确的位置即可。

答案1

你有一个大的minipage,里面放了大号i(不带minipage)和正文里面另一个minipage。现在由于您放置了多少正文,内部的高度minipage会有所不同。由于您没有指定内部迷你页面的垂直对齐方式,因此center将应用默认设置,例如,在下图中,迷你页面的中心与 的中心对齐x

在此处输入图片描述

因此,您会获得具有不同数量文本(高度)的不同外观,因为中心始终对齐。

作为一种补救措施,将i和正文放在单独的minipages 中,这样就不需要外部了minipage

\documentclass[a4paper,oneside]{article}

\usepackage{xcolor}
\definecolor{Info}{rgb}{0.9,0.5,0.0}
\usepackage{tikz}
\usepackage{anyfontsize}
\usepackage{environ}
\NewEnviron{Note}%
{
  \begin{center}
    \begin{tikzpicture}
      \node[rectangle, rounded corners=15pt, inner sep=15pt, fill=Info](box){%
        \begin{minipage}{0.05\textwidth}
          \color{white}
          \mbox{\fontsize{40}{48}\selectfont$i$}
        \end{minipage}
          \hfill
          \begin{minipage}{0.9\textwidth}
            \bfseries\BODY
          \end{minipage}
};
    \end{tikzpicture}
  \end{center}
}

\begin{document}
\begin{Note}
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test.
\end{Note}
\end{document}

在此处输入图片描述

这里有一个tcolorbox解决方案。为什么tcolorbox?你可以用它做很多美化。有关详细信息,请参阅其手册。

\documentclass[a4paper,oneside]{article}
\usepackage{anyfontsize}
\usepackage[many]{tcolorbox}
\tcbuselibrary{skins,breakable}
\definecolor{Info}{rgb}{0.9,0.5,0.0}
\newtcolorbox{Note}[1][i]{
   colback=Info,
   colframe=Info,
   arc=15pt,
   width=\linewidth,
   enhanced jigsaw,
   overlay={
        \begin{scope}[]
            \node[anchor=west,align=center,text width=0.08\linewidth,
                     font=\fontsize{40}{48}\selectfont,text=white] at (frame.west) {$#1$};
        \end{scope}},
   left=0.08\linewidth,
   right=10pt,top=10pt,bottom=10pt,
   fontupper=\bfseries,
%   before=\begin{center},
%   after=\end{center}
   }

\begin{document}
\noindent
\begin{Note}
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test. This is a test.
  This is a test.
\end{Note}
\end{document}

在此处输入图片描述

相关内容