Salto de línea en \newcommand

Salto de línea en \newcommand

Definí un nuevo comando para resaltar algunas partes del texto:

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

Desafortunadamente, cuando el texto se vuelve demasiado largo, se superpone a mis márgenes. La palabra clave ignora el margen de la tabla, así como el margen del documento completo.

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

ingrese la descripción de la imagen aquí

¿Puedo decirle a mi comando que cree una nueva línea o forzar que se rompa después de X centímetros?

Gracias.

Respuesta1

Puedes utilizar los consejos de @barbarabeeton. Sin embargo, no recomiendo el nombre \keywordporque está definido en otras partes de algunas clases. Entonces, newcommandpuede verse así:

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

Observe esto -2\fboxsep, que sirve para alinearlo colorboxcon el texto de arriba y de abajo. Aquí hay un ejemplo 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}

ingrese la descripción de la imagen aquí

información relacionada