2010-01-21 9 views
27

Nel mio rapporto, sto scrivendo alcuni nomi di classi o nomi di variabili all'interno di un paragrafo e voglio che questi nomi siano resi in un font monospace.Prevenire il tag LaTeX texttt dal lasciare che il suo contenuto passi oltre il margine

Esempio:

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

A volte, quando la parola all'interno del tag \ texttt è reso alla fine di una riga, la parola non va alla riga successiva, e non v'è nessuna rottura in essa né: la fine della parola passa oltre il margine.

Come devo gestire un caso del genere?

Cheers.

risposta

31

Questo non ha molto a che fare con \texttt. La parola è semplicemente troppo lunga e LaTeX non sa come sillabarlo. Si può dire che come farlo manualmente, dichiarando regole di sillabazione:

\hyphenation{base-Admin-Configuration} 

Il comando \hyphenation può assumere arbitrariamente molte parole, separate da spazi bianchi.

In alternativa, se questo non il trucco, è possibile introdurre i suggerimenti hypenation manuali nel testo:

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

verrà visualizzato solo il sillabazione reale - non utilizzati cosiddetti trattini discrezionali (\-) non essere visualizzato in modo che tu possa liberamente cospargere il tuo testo con loro, se necessario.

[Read more about hyphenation in LaTeX]

Per evitare LaTeX da traboccante linee in linea di principio, l'intero paragrafo può essere avvolto in un ambiente sloppypar (grazie a Will per aver sollevato la questione nei commenti):

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

Questo manipola i parametri dell'algoritmo di interruzione di linea (in particolare, \tolerance). Il rovescio della medaglia: questo può portare a una spaziatura molto brutta. In alternativa, è possibile manipolare direttamente \tolerance e altri parametri interni - le domande frequenti TeX shows how.

+0

Domanda veloce: E 'possibile ottenere LaTeX per rompere la linea in anticipo, invece di sovraccaricare il margine? –

+1

@Anon: beh, puoi sempre * forzare * un'interruzione di riga usando '\\' o '\ newline'. Oppure potresti mettere il testo in un ambiente 'flushleft' - non sarà giustificato allora. Ma in generale, no, non che io sappia. Forse è possibile modificare i parametri interni dell'algoritmo di interruzione di riga. Non lo so. –

+5

Il più vicino che si può ottenere è di avvolgere il paragrafo con '\ begin {sloppypar} ... \ end {sloppypar}' per consentire interruzioni di riga più scadenti. (Oppure scrivi '\ sloppy' per attivarlo globalmente.) –

3

La soluzione è abbastanza semplice: utilizzare il pacchetto url e sostituire il comando texttt con il comando path.

Ho scoperto che qui https://tex.stackexchange.com/questions/299/how-to-get-long-texttt-sections-to-break nel post di Will Robertson.

Acclamazioni

+0

Questo non aiuta, quando abbiamo nomi di classi lunghi e complessi. Rompe i percorsi solo nel separatore di file. Rimuove anche gli spazi bianchi, ad es. nella dichiarazione dei parametri di un metodo. – fachexot

Problemi correlati