여러 페이지에 걸쳐 분할되는 색상 상자

여러 페이지에 걸쳐 분할되는 색상 상자

텍스트에 설명을 추가할 수 있는 환경/명령을 구축하려고 합니다. 아이디어는 페이지에 걸쳐 분할할 수 있고 \ttfamily하이픈과 함께 글꼴을 사용할 수 있는 색상 상자를 갖는 것입니다. 또한 그 안에 있는 모든 구조(테이블, 열거, 항목화 등)를 사용하고 싶습니다. 또한 상자 너비는 가변적이며 최대값은 \linewidth. 내 MWE는 아래와 같습니다.

\documentclass{article} 

\usepackage{blindtext}
\usepackage[showframe]{geometry}

\usepackage{xcolor}
\usepackage{calc}
\usepackage{mdframed}
\usepackage{environ,varwidth}
\newsavebox\MyTempBox
\NewEnviron{mycomment}{%
\savebox\MyTempBox{%
\begin{varwidth}{\linewidth}
\BODY
\end{varwidth}}%
\begin{mdframed}
[topline=false,
rightline=false,
bottomline=false,
leftline=false,
innerleftmargin=1ex,
innerrightmargin=1ex,
innertopmargin=1ex,
innerbottommargin=1ex,
backgroundcolor=pink,
font=\ttfamily,
userdefinedwidth=\dimexpr\wd\MyTempBox\relax
]
\hyphenchar\font=\defaulthyphenchar\relax
\BODY
\end{mdframed}%
}%

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

Overfull \hbox지금까지는 거의 작동했지만 문제는 텍스트가 상자 경계를 엄격하게 준수하지 않기 때문에 많은 것을 생성한다는 것입니다 . 두 번째를 \BODY미니페이지 안에 넣으면

\begin{minipage}{\linewidth}
\BODY
\end{minipage}

더 잘 작동하지만 페이지 나누기 기능이 느슨해졌습니다. 페이지를 넘길 수 있는 미니페이지가 해결책이 될 수 있다고 생각합니다.

mdframed 패키지에 연결되어 있지 않습니다. 예를 들어,

\newcommand{\ccomment}[1]{%
\noindent\colorbox{pink}{\begin{varwidth}{\linewidth-1em}%
\ttfamily
\hyphenchar\font=\defaulthyphenchar\relax % enable hyphenation
#1
\end{varwidth}}}

나에게는 괜찮겠지만, 한 번 더 페이지에 걸쳐 나누어질 수 있는 긴 텍스트에는 사용할 수 없습니다.

감사해요.

답변1

나는 단순히 패키지 \RaggedRight에서 사용합니다 ragged2e.

\documentclass{article}

\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{xcolor}
\usepackage{ragged2e}
\usepackage{mdframed}

\newenvironment{mycomment}
  {\begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight}
  {\end{mdframed}\ttfamily\hyphenchar\font=-1 }

\begin{document}

\begin{mycomment}
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\blindtext
\end{mycomment}

\end{document}

의 최종 설정은 \hyphenchar타자기 글꼴에 하이픈이 없는 기본 설정을 복원하는 것입니다(이러한 할당은 항상 전역적임).


수용하려면 varwidth올바른 선 너비를 제공해야 합니다. 물론 여기에는 environvarwidth패키지가 필요합니다.

\NewEnviron{mycomment}
  {\sbox0{\ttfamily\hbadness=10000
   \begin{varwidth}{\dimexpr\linewidth-2ex\relax}
   \BODY
   \end{varwidth}}%
   \begin{mdframed}[topline=false,
    rightline=false,
    bottomline=false,
    leftline=false,
    innerleftmargin=1ex,
    innerrightmargin=1ex,
    innertopmargin=1ex,
    innerbottommargin=1ex,
    backgroundcolor=pink,
    font=\ttfamily,
    userdefinedwidth=\dimexpr\wd0+2ex\relax
   ]\hyphenchar\font=\defaulthyphenchar\RaggedRight\BODY
   \end{mdframed}\ttfamily\hyphenchar\font=-1 }

당신 과 함께 \hbadness=10000가짜 메시지를 끄십시오 Underfull \hbox.

관련 정보