
Ich suchte nach einer Möglichkeit, die Silbentrennung innerhalb zu aktivieren \texttt
. Ich fanddiese Antwortund es schien perfekt: einfach und für viele Leute nützlich.
Ich habe mich dafür entschieden, die Silbentrennung global zu aktivieren \texttt
und wie dort vorgeschlagen die folgende Zeile hinzugefügt:
\DeclareFontFamily{\encodingdefault}{\ttdefault}{\hyphenchar\font=`\-}
Leider funktionierte dies nicht und hatte einen unerwünschten Nebeneffekt: Die Schreibmaschinenschriftart wurde darin nicht mehr verwendet \texttt
und der folgende Fehler erschien in der Konsolenausgabe:
LaTeX Font Warning: Some font shapes were not available, defaults substituted.
Dieser Fehler hat mich auf die richtige Spur gebracht: Ich verwende in meinen LaTeX-Dokumenten immer die T1-Kodierung und moderne Schriftarten:
\usepackage[T1]{fontenc}
\usepackage{lmodern}
und sobald ich diese Zeilen auskommentiert habe, hat alles einwandfrei funktioniert.
Gibt es eine Möglichkeit, die ursprüngliche Antwort auch auf diesen Fall anzupassen? Ich hätte diesem Beitrag einen Kommentar hinzugefügt, aber leider habe ich noch nicht genügend Reputation, um das zu tun.
Vielen Dank.
Antwort1
Das Problem kann auch auf andere Weise gelöst werden. Dazu muss die Schriftdefinitionsdatei manuell geladen und das Bindestrichzeichen geändert werden, bevor eine beliebige Schriftart dieser Familie verwendet wird:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\makeatletter
\input{t1lmtt.fd}
\@namedef{T1+lmtt}{}
\makeatother
\begin{document}
\parbox{0pt}{\ttfamily
\hspace{0pt}hyphenation in typewriter type
}
\end{document}
Eine der Aufgaben von ist es , die Erweiterung auf \DeclareFontFamily{enc}{fam}{code}
zu definieren . Die Steuersequenz ist aufgrund von nicht direkt verwendbar , daher kann (was ist ) verwendet werden. Da die normale Deklaration lautet\enc+fam
code
\enc+fam
+
\@namedef
\expandafter\def\csname#1\endcsname
\DeclareFontFamily{T1}{lmtt}{\hyphenchar=-1 }
was
\@namedef{T1+lmtt}{\hyphenchar=-1 }
Wir wirken dem entgegen, indem wir
\@namedef{T1+lmtt}{}
Dies code
wird verwendet, sobald eine Schriftform relativ zur Schriftfamilie ausgewählt und dauerhaft an die ausgewählte Schriftart gebunden wird. Daher ist es wichtig, dass die Neudefinition erfolgt, bevor tatsächlich eine Schriftart ausgewählt wird.
Antwort2
In Franks Antwort fehlt ein wichtiger Punkt: Wenn Sie in Ihrer Präambel eine Schriftfamilie deklarieren, versucht Latex nicht mehr, die .fd-Datei einzulesen, und daher gehen alle anderen Schriftdeklarationen verloren. Sie können sie vor der Änderung eingeben:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{lipsum}
\makeatletter
\input{t1lmtt.fd}
\makeatother
\DeclareFontFamily{\encodingdefault}{\ttdefault}{\hyphenchar\font=`\-}
\begin{document}
\ttfamily abc \lipsum
\end{document}
Oder alternativ:
\ttfamily
\hyphenchar\font=`\-
\DeclareFontFamily{\encodingdefault}{\ttdefault}{\hyphenchar\font=`\-}