Zeilenumbruch in \newcommand

Zeilenumbruch in \newcommand

Ich habe einen neuen Befehl zum Hervorheben einiger Textteile definiert:

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

Wenn der Text zu lang wird, überlappt er leider meine Ränder. Das Schlüsselwort ignoriert den Rand der Tabelle sowie den Rand des gesamten Dokuments.

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

Bildbeschreibung hier eingeben

Kann ich meinem Befehl sagen, dass er eine neue Zeile einfügen oder einen Zeilenumbruch nach X Zentimetern erzwingen soll?

Danke.

Antwort1

Sie können den Rat von @barbarabeeton befolgen. Ich empfehle den Namen \keywordjedoch nicht, da er in einigen Klassen an anderer Stelle definiert ist. Das kann also newcommandso aussehen:

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

Beachten Sie dies -2\fboxsep, das dazu dient, die mit dem Text darüber und darunter auszurichten colorbox. Hier ist ein vollständiges Beispiel:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen