
我想tcolorbox
在頁面中顯示具有相同水平位置的易碎 es,即使它們位於清單項目中。我可以處理不易碎的盒子,但不能處理易碎的盒子,如下 MCE 所示。
因此問題是:如何水平移動易碎的tcolorbox
?
\documentclass{article}
\usepackage{showframe}
\usepackage{calc}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\newlength{\myshift}
\newtcolorbox{mybox}[1][]{
text width=\textwidth,
before={%
\setlength{\myshift}{\linewidth-\textwidth-5.5mm}%
\smallskip\par
\noindent\hspace*{\myshift}%
},
#1
}
\newcommand{\test}[1][]{%
Foo\par
\begin{mybox}[#1]
\lipsum[1]
\end{mybox}
}
\begin{document}
\section{Non-beakable}
\test
\begin{enumerate}
\item \test
\end{enumerate}
\newpage
\section{Beakable}
\test[breakable]
\begin{enumerate}
\item \test[breakable]
\end{enumerate}
\end{document}
答案1
在清單環境中,總左邊距儲存在 維度 中\@totalleftmargin
。因此您可以使用enlarge left by=-5.5mm-\@totalleftmargin
來替換before=...
.
\documentclass{article}
\usepackage{showframe}
\usepackage{calc}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\makeatletter
\newtcolorbox{mybox}[1][]{
text width=\textwidth,
enlarge left by=-5.5mm-\@totalleftmargin,
#1
}
\makeatother
\newcommand{\test}[1][]{%
Foo\par
\begin{mybox}[#1]
\lipsum[1]
\end{mybox}
}
\begin{document}
\section{Non-beakable}
\test
\begin{enumerate}
\item \test
\end{enumerate}
\newpage
\section{Beakable}
\test[breakable]
\begin{enumerate}
\item \test[breakable]
\end{enumerate}
\end{document}
備註:before=...
僅適用於斷盒序列中的第一個盒,請參閱tcolorbox
、 秒的文件。 18.1技術概述(庫breakable
)。