
Ich versuche, lange Schlüsselwörter wie im Beispiel mit Bindestrich zu trennen:
\documentclass[10pt]{article}
\usepackage{underscore}
\begin{document}
\pagestyle{empty}
\parbox{1pt}{TESTSTRING\_TESTSTRING\_HYPHENATION}
\\\\
%\begin{figure}[here]
%\centerline{\includegraphics*[width=0.8\paperwidth]{/pictures/regular_testname.png}}
%\centerline{\includegraphics*[width=0.8\paperwidth]{/pictures/escaped\_testname.png}}
%\end{figure}
\end{document}
Ich habe es versuchtDasUndDasund mehr ohne Erfolg. Wenn ich die Bilder im Beispiel auskommentiere, underscore
macht das -Paket Probleme, da der Unterstrich in den Dateinamen nicht mehr richtig interpretiert wird. Ohne dieses Paket kann ich die Bilder zwar einfügen, aber ich bekomme meine Strings nicht getrennt.
Hast Du eine Idee, wie man richtig und nur lokal Silbentrennung vornehmen kann, also zum Beispiel in der Form: TESTSTRING\myUnderTESTSTRING\myUnderHYPHENATION
?
Und wie kann ich kontrollieren, dass beim Trennen der Zeichenfolge kein Bindestrich geschrieben wird? Das wäre sogar noch wünschenswerter.
Eine Nebenfrage: Warum wird in meinem Beispiel der erste Teil der Zeichenfolge nicht getrennt?
Antwort1
Vielleicht würde so etwas helfen, ohne das underscore
Paket zu verwenden, was Sie ja anscheinend bevorzugen (nicht verwenden). Es aktiviert die Silbentrennung mit \newuson
und stellt die ursprüngliche Definition von \_
mit wieder her \newusoff
. Durch diesen Ein-/Aus-Mechanismus können Sie den Umfang der Änderungen steuern.
Auch erfolgt die „Silbentrennung“ des Unterstrichs ohne Gedankenstrich, was, wenn ich die Frage richtig verstanden habe, auch erwünscht schien.
Um das erste Wort eines Absatzes mit einem Silbenstrich zu versehen, \hspace{0pt}
ist in jedem Fall ein a am Anfang des Absatzes erforderlich.
\documentclass{article}
%\usepackage{underscore}
\textwidth0pt
\let\svus\_
\newcommand\newuson{\def\_{\svus\allowbreak\hspace{0pt}}}
\newcommand\newusoff{\let\_\svus}
\begin{document}
TESTSTRING\_TESTSTRING\_HYPHENATION
\newuson
\hspace{0pt}TESTSTRING\_TESTSTRING\_HYPHENATION
\newusoff
TESTSTRING\_TESTSTRING\_HYPHENATION
\end{document}
Antwort2
Wenn Sie Ihre langen Zeichenfolgen mit Unterstrich als Argument für ein Makro behalten möchten, ist das ganz einfach:
\documentclass[10pt]{article}
\DeclareRobustCommand\Name[1]{{%
\let\_\hyphenationunderscore#1%
}}
\newcommand{\hyphenationunderscore}{%
\textunderscore\nobreak\hspace{0pt}%
}
\begin{document}
\pagestyle{empty}
\parbox{1pt}{
\hspace{0pt}%
\Name{TESTSTRING\_TESTSTRING\_HYPHENATION}
}
\end{document}
Sie können auch \_
global neu definieren:
\documentclass[10pt]{article}
\renewcommand{\_}{%
\textunderscore\nobreak\hspace{0pt}%
}
\begin{document}
\pagestyle{empty}
\parbox{1pt}{
\hspace{0pt}%
TESTSTRING\_TESTSTRING\_HYPHENATION
}
\end{document}
Alternativ können Sie Folgendes _
aktivieren:
\documentclass[10pt]{article}
\newcommand{\hyphenationunderscore}{%
\textunderscore\nobreak\hspace{0pt}%
}
\catcode`_=\active
\protected\def_{\ifmmode\sb\else\hyphenationunderscore\fi}
\begin{document}
\pagestyle{empty}
\parbox{1pt}{
\hspace{0pt}%
TESTSTRING_TESTSTRING_HYPHENATION
}
\end{document}
Beachten Sie, dass ohne \hspace{0pt}
keine Silbentrennung erfolgt \parbox
, da TeX keine Silbentrennung für Wörter vornimmt, denen kein „glue“ (Klebemittel) vorangestellt ist.
Wenn Sie auch nach dem Unterstrich umbrechen möchten, ändern Sie \nobreak
in \linebreak[0]
throughout. Die zweite Lösung wird beispielsweise
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\renewcommand{\_}{%
\textunderscore\linebreak[0]\hspace{0pt}%
}
\begin{document}
\pagestyle{empty}
TESTSTRING\_TESTSTRING\_HYPHENATION
\parbox{1pt}{
\hspace{0pt}%
TESTSTRING\_TESTSTRING\_HYPHENATION
}
\end{document}
Die Ausgabe hier zeigt auch, was mit T1 passiert.