Estou tentando construir um ambiente/comando que me permita colocar comentários no texto. A ideia é ter uma caixa colorida que possa quebrar as páginas e usar a \ttfamily
fonte com hifenização. Também quero usar qualquer estrutura (tabela, enumerar, discriminar, etc.) dentro dela. Além disso, a largura da caixa é variável e o máximo é \linewidth
. Meu MWE está abaixo.
\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}
Até agora quase funciona, o problema é que gera muito Overfull \hbox
porque o texto não respeita estritamente os limites da caixa. Se eu colocar o segundo \BODY
dentro de uma minipágina
\begin{minipage}{\linewidth}
\BODY
\end{minipage}
Funciona melhor, mas perco o recurso de quebra de páginas. Acho que uma minipágina que pode quebrar páginas pode ser a solução.
Não estou apegado ao pacote mdframed. Por exemplo,
\newcommand{\ccomment}[1]{%
\noindent\colorbox{pink}{\begin{varwidth}{\linewidth-1em}%
\ttfamily
\hyphenchar\font=\defaulthyphenchar\relax % enable hyphenation
#1
\end{varwidth}}}
Tudo bem para mim, mas mais uma vez não posso usá-lo para textos longos que podem quebrar nas páginas.
Obrigado.
Responder1
Eu simplesmente usaria \RaggedRight
do ragged2e
pacote:
\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}
A configuração final \hyphenchar
é restaurar o padrão sem hifenização na fonte da máquina de escrever (tais atribuições são sempre globais).
Para acomodar varwidth
você deve fornecer a largura de linha correta; isso, é claro, precisa dos pacotes environ
and 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 }
Com \hbadness=10000
você desligue Underfull \hbox
mensagens espúrias.