깨지기 쉬운 tcolorbox를 수평으로 이동하는 방법은 무엇입니까?

깨지기 쉬운 tcolorbox를 수평으로 이동하는 방법은 무엇입니까?

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).

관련 정보