tcolorbox 版本 3 顶部对齐

tcolorbox 版本 3 顶部对齐

我编写了这个简单的 latex 文件,试图使左右颜色框顶部对齐。以下是代码

\documentclass[letterpaper,12pt]{article}
\usepackage{tcolorbox}
\pagestyle{empty}
%
\setlength{\topmargin}{0cm}
\setlength{\textheight}{23.5cm}
\setlength{\textwidth}{18.8cm}
\setlength{\oddsidemargin}{-1.1cm}
\setlength\parindent{0pt}

\begin{document}

\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}

\fbox{
\begin{minipage}[t]{0.60\textwidth}
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{minipage}
}
\hfill
\fbox{
\begin{minipage}[t]{0.30\textwidth}
line 1\\
line 2
\end{minipage}
}

\fbox{
\begin{minipage}[t]{0.60\textwidth}
\begin{tcolorbox}[title=\begin{center}gauche\end{center}]
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{tcolorbox}
\end{minipage}
}
\hfill
\fbox{
\begin{minipage}[t]{0.30\textwidth}
\begin{tcolorbox}[title=\begin{center}droite\end{center}]
ligne 1\\
ligne 2
\end{tcolorbox}
\end{minipage}
}

\end{document}

TeXLive 2016 使用 tcolorbox 版本 3 的输出不好 版本 3 的输出不好

来自相同 TeXlive 2016 的输出但将 tcolorbox 目录替换为版本 2.80 给出预期结果 此处预期输出

您认为这是 tclorbox 版本 3 引入的一个错误吗?

谢谢

答案1

使用 3.93 版本,您可以使用halign title来避免\begin{center}...\end{center}width=来避免minipagebox align=top强制顶部框对齐:

在此处输入图片描述

\documentclass[letterpaper,12pt]{article}
\usepackage{tcolorbox}
\pagestyle{empty}
%
\setlength{\topmargin}{0cm}
\setlength{\textheight}{23.5cm}
\setlength{\textwidth}{18.8cm}
\setlength{\oddsidemargin}{-1.1cm}
\setlength\parindent{0pt}

\begin{document}

\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}

\fbox{
\begin{minipage}[t]{0.60\textwidth}
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{minipage}
}
\hfill
\fbox{
\begin{minipage}[t]{0.30\textwidth}
line 1\\
line 2
\end{minipage}
}

\fbox{
%\begin{minipage}[t]{0.60\textwidth}
\begin{tcolorbox}[width=.6\textwidth, halign title=center, title=gauche, box align=top]
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{tcolorbox}
%\end{minipage}
}
\hfill
\fbox{
%\begin{minipage}[t]{0.30\textwidth}
\begin{tcolorbox}[width=.3\textwidth, halign title=center, title=droite, box align=top]
ligne 1\\
ligne 2
\end{tcolorbox}
%\end{minipage}
}

\end{document}

答案2

在版本 3.40 和 3.50 之间,和 的代码已before更改after为检测特殊情况。就您而言,这改变了所需的副作用。但由于beforeafter可以进行调整,您可以通过引入以下选项来获得旧行为mybeforeafter

\tcbset{
  mybeforeafter/.style={before={\par\smallskip\parindent=0pt},after={\par\smallskip}},% v 3.40
}

将其添加到您的盒子中可获得所需的效果:

\documentclass[letterpaper,12pt]{article}
\usepackage{tcolorbox}
\pagestyle{empty}
%
\setlength{\topmargin}{0cm}
\setlength{\textheight}{23.5cm}
\setlength{\textwidth}{18.8cm}
\setlength{\oddsidemargin}{-1.1cm}
\setlength\parindent{0pt}


\tcbset{
  mybeforeafter/.style={before={\par\smallskip\parindent=0pt},after={\par\smallskip}},% v 3.40
}

\begin{document}

\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}

\fbox{
\begin{minipage}[t]{0.60\textwidth}
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{minipage}
}
\hfill
\fbox{
\begin{minipage}[t]{0.30\textwidth}
line 1\\
line 2
\end{minipage}
}

\fbox{
\begin{minipage}[t]{0.60\textwidth}
\begin{tcolorbox}[title=\begin{center}gauche\end{center},mybeforeafter]
line 1\\
line 2\\
line 3\\
line 4\\
line 5
\end{tcolorbox}
\end{minipage}
}
\hfill
\fbox{
\begin{minipage}[t]{0.30\textwidth}
\begin{tcolorbox}[title=\begin{center}droite\end{center},mybeforeafter]
ligne 1\\
ligne 2
\end{tcolorbox}
\end{minipage}
}

\end{document}

相关内容