2009-11-09 23 views
14

würde Ich mag den folgenden Satz zum Ausdruck bringt (Quellpfad auch kursiv ist, ist es nicht korrekt wiedergegeben):Latex: Wie Zeilenumbruch setzen in einer Mathe

Jeder Eintrag hat eine Liste von Tupel: < Quellpfad, R/W, trip_counter, Auftreten, getötet (erläutert in dem später)>

für Meine aktuelle Problemumgehung ist:

$ \left\langle 
\textit{source\_location}, \textit{R/W}, \textit{trip\_counter}, 
\textit{occurrence}, \textit{killed} \text{(explained in the later)} 
\right\rangle $ 

Ich bin 2-Säulen-Papier. Diese < ..> ist zu lang, aber keine Zeilenumbrüche, weil es eine Mathematik ist. Wie setze ich in einem solchen Fall automatisch (oder manuell) einen Zeilenumbruch? Es scheint, dass \left\langle und \right\rangle in einer einzigen Mathematik sein sollten. Also, schwer in mehrere Mathe zu brechen.

$<$ und $>$ wäre eine Alternative, aber ich mag es nicht.

Danke!

Antwort

5

Warum nicht einen neuen Befehl definieren:

\newcommand{\tuple}[5]{$\langle$\textit{#1}, \textit{#2}, \textit{#3}, \textit{#4}, 
    \textit{#5} (explained in the latter)$\rangle$} 

Dann \tuple{sourcelocation}{R/W}{tripcounter}{occurrence}{killed}

+0

Danke Rob, ich werde es auch versuchen. – minjang

0

Ich würde die align * Umgebung von AMSmath verwenden. Außerdem könnten Sie einfach "\" hinzufügen, um die Zeilen zu brechen. Sollte auch in mathematischen Umgebungen funktionieren. Alternativ könnten Sie die Gleichungen trennen.

+0

Danke, aber \ und \\ funktioniert einfach nicht.Trennungsgleichungen wären eine Option, aber \ left \ langle und \ right \ rangle lassen keine separate Gleichung zu. – minjang

1

Es scheint eine package that addresses that problem, called breqn zu sein. Sie können dies versuchen und lassen Sie uns wissen (ich habe das nicht verwendet).

+2

breqn ist (großartig) für das Brechen von Display-Gleichungen; Die Frage bezieht sich auf Inline-Mathe in einem Absatz. –

+0

Sie haben Recht. Vielen Dank. –

21

LaTeX verwenden ist Inline-Mathematik erlauben Linien standardmäßig zu brechen über, aber es gibt eine Reihe von Einschränkungen. Speziell in Ihrem Fall, wenn Sie \left...\right verwenden, wird alles in eine nicht brechbare mathematische Gruppe eingefügt, also müssen Sie sie zuerst entweder durch \langle...\rangle oder vielleicht \bigl\langle...\bigr\rangle ersetzen.

Dies ist jedoch immer noch nicht genug, um Zeilenumbrüche zu ermöglichen; Normalerweise ist das nur nach Beziehungen oder Operatoren erlaubt, nicht nach Satzzeichen wie dem Komma. (Ich denke, das ist, was sowieso passiert; ich habe nicht aufgehört, nachzusehen.) Sie wollen also angeben, wo zulässige Zeilenumbrüche auftreten können, indem Sie nach jedem Komma \linebreak[1] schreiben.

Je nachdem, wie oft Sie dies tun müssen, ist es vielleicht besser, einen Befehl zu schreiben, um Ihre "Tupel" in einen netten Befehl zu verpacken. Um dies in Ihrer Quelle zu schreiben:

 
$ \mytuple{ source\_location, R/W, trip\_counter, occurrence, 
    killed\upshape (explained in the later) } $ 

hier eine Definition von \mytuple, die alle oben berücksichtigt:

 
\makeatletter 
\newcommand\mytuple[1]{% 
    \@tempcnta=0 
    \bigl\langle 
    \@for\@ii:=#1\do{% 
    \@insertbreakingcomma 
    \textit{\@ii} 
    }% 
    \bigr\rangle 
} 
\def\@insertbreakingcomma{% 
    \ifnum \@tempcnta = 0 \else\,,\ \linebreak[1] \fi 
    \advance\@tempcnta\@ne 
} 
\makeatother 
+0

Vielen Dank! Ich werde es versuchen! – minjang

+0

Ich schätze Ihre Hilfe. Es war sehr nützlich für mich, obwohl ich Robs Antwort auswählen musste. – minjang

+0

Keine Sorge, hier gibt es keine Politik! Nun, er hat dir nicht gerade geholfen, einen Zeilenumbruch im Math-Modus zu machen, aber seine Lösung funktioniert genauso gut, außer du willst mehr als vier Dinge in deinem Tupel haben :) –

-2

Verwenden Sie \ Zeilenumbrüche innerhalb der mathematischen Ausdruck, wo Sie eine neue Linie wollen sogar zwischen 2 Klammern. Dadurch wird erzwungen, dass die Linie unterbrochen wird.