
リストの項目内にある場合でも、ページ内ですべて同じ水平位置でブレーク可能な es を表示したいと思いますtcolorbox
。次の 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
)。