跨頁面的顏色框

跨頁面的顏色框

我正在嘗試建立一個環境/命令,允許我在文字中添加註釋。這個想法是有一個可以跨頁的彩色框,並使用\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

我只是\RaggedRightragged2e包中使用:

\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消息。

相關內容