Quebra de linha em \newcommand

Quebra de linha em \newcommand

Defini um novo comando para destacar algumas partes do texto:

\newcommand{\keyword}[1]{\colorbox{black!5}{#1}}

Infelizmente, quando o texto fica muito longo, ele se sobrepõe às minhas margens. A palavra-chave ignora a margem da tabela, bem como a margem do documento furo.

\keyword{exp: c=wordExp \{ if(\$c.matches(``a string'')\{ 
\textbackslash\textbackslash do something \}) \}}

insira a descrição da imagem aqui

Posso dizer ao meu comando para criar uma nova linha ou forçá-la a quebrar após X centímetros?

THX.

Responder1

Você pode usar o conselho de @barbarabeeton. Porém, não recomendo o nome \keywordporque ele é definido em outro lugar em algumas classes. Então, a lata newcommandpode ficar assim:

\newcommand{\KEY}[1]{\colorbox{black!5}{\parbox{\dimexpr\linewidth-2\fboxsep}{#1}}}

Observe isto -2\fboxsep, que serve para alinhar colorboxcom o texto acima e abaixo. Aqui está um exemplo completo:

\documentclass{article}
\usepackage{xcolor}
\begin{document}

\newcommand{\KEY}[1]{\colorbox{black!5}{\parbox{\dimexpr\linewidth-2\fboxsep}{#1}}}

\begin{tabular}{|p{.4\linewidth}|p{.5\linewidth}|}
\hline
Something here to fill half & 
Something here to fill half the line width
\KEY{exp: c=wordExp \{ if(\$c.matches(``a string'')\{ 
\textbackslash\textbackslash do something \}) \}}
\\ \hline
\end{tabular}

\end{document}

insira a descrição da imagem aqui

informação relacionada