2010-01-21 6 views
27

In meinem Bericht schreibe ich einige Klassen- oder Variablennamen innerhalb eines Absatzes, und ich möchte, dass diese Namen in einer Monospace-Schriftart wiedergegeben werden.Verhindern, dass der Inhalt des texttt LaTeX-Tags den Rand überschreitet

Beispiel:

This is my class name: \texttt{baseAdminConfiguration}. 

Manchmal, wenn das Wort innerhalb des \ texttt-Tages am Ende einer Zeile wiedergegeben wird, wird das Wort nicht in der nächsten Zeile gehen, und es gibt keine Pause drin weder: Das Ende des Wortes geht über den Rand.

Wie soll ich mit einem solchen Fall umgehen?

Prost.

Antwort

31

Dies hat nicht viel mit \texttt zu tun. Das Wort ist einfach zu lang, und LaTeX weiß nicht, wie es zu trennen ist. Sie können ihm sagen, wie dies manuell zu tun, indem Trennregeln erklärt:

\hyphenation{base-Admin-Configuration} 

Das \hyphenation Kommando übernehmen kann beliebig viele Worte, durch Leerzeichen getrennt.

Alternativ kann, wenn dies nicht der Trick funktioniert, können Sie die manuelle Hinweise der Silbentrennung im Text vorstellen:

This is a long text that uses the word \texttt{base\-Admin\-Configuration) … 

wird nur die tatsächliche hyphenation angezeigt wird - nicht verwendete so genannte diskretionäre Bindestriche (\-) nicht angezeigt werden, damit Sie Ihren Text bei Bedarf frei streuen können.

[Read more about hyphenation in LaTeX]

Um LaTeX von überquellenden Linien grundsätzlich, der gesamte Absatz zu verhindern in einer sloppypar Umgebung (dank Will für diesen Hinweis in den Kommentaren) gewickelt werden kann:

\begin{sloppypar} 
    Some text … 
\end{sloppypar} 

Dies manipuliert die Parameter des Zeilentrennalgorithmus (insbesondere \tolerance). Der Nachteil: Dies kann zu sehr hässlichen Abständen führen. Alternativ können \tolerance und andere interne Parameter direkt manipuliert werden - die TeX FAQ shows how.

+0

Schnelle Frage: Ist es möglich, LaTeX früh zu brechen, anstatt den Rand zu überholen? –

+1

@Anon: Nun, Sie können immer einen Zeilenumbruch mit '\\' oder '\ newline' erzwingen *. Oder Sie können den Text in eine "flushleft" -Umgebung stellen - das ist dann nicht gerechtfertigt. Aber im Allgemeinen, nein, nicht dass ich mir dessen bewusst bin. Vielleicht ist es möglich, die internen Parameter des Zeilenumbruch-Algorithmus zu optimieren. Ich weiß es nicht. –

+5

Die nächste Möglichkeit ist, den Absatz mit '\ begin {sloppypar} ... \ end {sloppypar}' einzufügen, um schlechtere Zeilenumbrüche zu ermöglichen. (Oder schreiben Sie '\ sloppy' um es global zu aktivieren.) –

3

Die Lösung ist recht einfach: Verwenden Sie das Paket url und ersetzen Sie den Befehl texttt mit dem Befehl path.

Ich habe herausgefunden, dass hier https://tex.stackexchange.com/questions/299/how-to-get-long-texttt-sections-to-break in der Post von Will Robertson.

Prost

+0

Das hilft nicht, wenn wir lange komplexe Klassennamen haben. Es bricht Pfade nur am Dateitrennzeichen ab. Und es entfernt auch Leerräume, z.B. in der Parameterdeklaration einer Methode. – fachexot