テキストにコメントを配置できる環境/コマンドを構築しようとしています。アイデアとしては、ページをまたいで改ページできる色付きのボックスを用意し、\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
今のところはほぼうまくいっていますが、問題はテキストがボックスの境界を厳密に守っていないため、大量のテキストが生成されてしまうことです。2番目を\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
適切な線幅を指定する必要があります。これには、もちろん、environ
およびvarwidth
パッケージが必要です。
\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
。