Silbentrennung für Wörter mit Unterstrich lokal

Silbentrennung für Wörter mit Unterstrich lokal

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}

Bildbeschreibung hier eingeben

Ich habe es versuchtDasUndDasund mehr ohne Erfolg. Wenn ich die Bilder im Beispiel auskommentiere, underscoremacht 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 underscorePaket zu verwenden, was Sie ja anscheinend bevorzugen (nicht verwenden). Es aktiviert die Silbentrennung mit \newusonund 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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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 \nobreakin \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.

Bildbeschreibung hier eingeben

verwandte Informationen