PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbruch innerhalb runden Klammen verhindern



ubiquitin
02-04-2015, 19:05
In meinem Text habe ich viele runde Klammern verwendet
(mit verschiedenen Angaben in den Klammern).

Nun möchte ich global, in der Präambel definieren, dass alle Kombinationen gekennzeichnet durch geöffnete und geschlossene runde Klammern "(wortA wortB)" auch wirklich nur auf exakt einer Zeile steht. (also dass nicht mehr der eine
Teil der Klammer auf der einen Zeile und der nächste Teil auf der nächsten Zeile steht)

Der Inhalt in den runden Klammern ist ganz verschieden, daher möchte ich das global definieren. Geht das?

klops
02-04-2015, 19:12
Verwende die runden Klammen nicht direkt, sondern definiere einen Befehl, der den Text zusammen mit den runden Klammern in eine \mbox packt:
\documentclass{article}
\newcommand*{\einschub}[1]{\mbox(#1)}
\begin{document}
Hier kommt ein \einschub{das ist der Einschub}, der nicht umbrochen wird.
\end{documet}
ABER: Dir sollte klar sein, dass ein solcher Text dazu führt, dass das Dokument nicht mehr sinnvoll umbrochen werden kann. Das wird zu vieln overfull und underfull \hbox Meldungen führen. Auch sind die Wortabstände innerhalb \mbox unveränderlich.

ubiquitin
02-04-2015, 19:32
In meinem Text stehen gut 200 runde Klammern in denen jeweils ca. zwei Wörter stehen. Gibt es eine Möglichkeit, dass LaTex direkt erkannt dass "(" und ")" auf eine Zeile gehören?

Ich arbeite mit Lyx daher ist es nicht so einfach lokal LaTex-Befehlen zu schreiben (das geht mit Ctrl+L; weiss aber nicht ob man "(" durch ein "Ctrl+L \einschub{" mit ALLE ERSETZEN kann).

rais
06-04-2015, 20:30
In meinem Text stehen gut 200 runde Klammern

das sind denn ja nur rund hundert Kammerpaare...

Gibt es eine Möglichkeit, dass LaTex direkt erkannt dass "(" und ")" auf eine Zeile gehören?

man könnte `(' zu einem aktiven Zeichen machen und entsprechend definieren, etwa


\documentclass{article}
\newcommand*\lparen{(}
\newcommand*\rparen{)}
\catcode`\(=\active
\def(#1){\mbox{\lparen#1\rparen}}
\begin{document}
Hier kommt ein (das ist der Einschub), der nicht umbrochen wird.
\end{document}

Sei Dir dabei aber bewusst, daß damit ein `(a(b))' nicht zulässig ist -- das Makro `(' vor `a' sieht das auf `b' folgende `)' als Argumentende, damit geht das `(' direkt vorm `b' quasi leer aus ... anders ausgedrückt: runde Klammern sind mit dieser Methode nicht (mehr) schachtelbar.
Welchen Einfluss das Teil auf den Mathemodus haben mag, hab ich gar nicht erst getestet.

MfG

klops
07-04-2015, 10:25
picture-Umgebungen funktionieren damit auch nicht mehr und die werden intern von diversen Paketen verwendet.