XeLaTex, Beamer/Flattersatz und Wortumbruch/Silbentrennung. Thema ist als GELÖST markiert

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich sehe keinen Grund, auf dieses Wort zu verzichten.

Beispiel mit polyglossia:
\documentclass{beamer}

\usepackage[T1]{fontenc}
\usepackage{polyglossia}
\setdefaultlanguage[%
  spelling=new,
  babelshorthands=true
]{german}
\usepackage{microtype}

\begin{document}

\begin{frame}
	\fbox{\parbox{1.2cm}{Ein langes Wort ist Oberweserdampfschifffahrtsgesellschaftskapitän.}}
\end{frame}

\end{document}
Beispiel mit babel:
\documentclass{beamer}

\usepackage{fontspec}
\usepackage[ngerman]{babel}

\begin{document}

\begin{frame}
	\fbox{\parbox{1.2cm}{Ein langes Wort ist Oberweserdampfschifffahrtsgesellschaftskapitän.}}
\end{frame}

\end{document}
Bild
Dateianhänge
Silbentrennung.png
Silbentrennung.png (20.12 KiB) 3468 mal betrachtet

Robert T.

Unterschiedliche Behandlung der babelshorthands

Beitrag von Robert T. »

Ich komme noch mal darauf zurück:

Jedes mal eine \parbox zu setzen mit der Definition der Länge dieser Box mag klappen, halte ich aber nicht für sonderlich praktikabel.

Offensichtlich versteht beamer wohl die Trennmuster der babelshortshands, verarbeitet jedoch nicht alle gleichermaßen.
\documentclass{beamer}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}

\begin{document}
 \begin{frame}
  % beameruserguide: If absolutely necessary, hyphenate words “by hand,” using the command \-.
  Ein langes Wort ist Oberweserdampfschifffahrts\-gesellschaftskapitän. Danach kommt ganz viel Text.
  % polyglossia: "- for an explicit hyphen sign, allowing hyphenation in the rest of the word
  Ein langes Wort ist Oberweserdampfschifffahrts"-gesellschaftskapitän. Danach kommt ganz viel Text.
  % polyglossia: "= for a compound word mark with a breakpoint, allowing hyphenation in the composing words.
  Ein langes Wort ist Oberweserdampfschifffahrts"=gesellschaftskapitän. Danach kommt ganz viel Text.
 \end{frame}
\end{document}
Das letzte Beispiel klappt soweit, ist aber natürlich ein Missbrauch von "= und hat den Nachteil, dass im PDF der Bindestrich als solcher codiert wird. (Letzteres stört beispielsweise beim Kopieren des Texts.)

R.

Besserwisser

Beitrag von Besserwisser »

Beamer verwendet Flattersatz. Im Flattersatz werden Wörter nur getrennt, wenn sie länger als eine Zeile sind. Ansonsten werden sie ggf. lediglich in die nächste Zeile umbrochen. Will man stattdessen Rausatz, also Flattersatz mit Trennung innerhalb einer definierten Flatterzone, dann verwendet man beispielsweise das Paket ragged2e:
\documentclass{beamer}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}
\usepackage{ragged2e}

\begin{document}
\RaggedRight% Rausatz statt Flattersatz.
\begin{frame}
  Ein langes Wort ist Oberweserdampfschifffahrtsgesellschaftskapitän. Danach kommt ganz viel Text.
\end{frame}
\end{document}
Der Status Rückfrage ist übrigens für Helfer, nicht für Fragesteller.

Robert T.

Beitrag von Robert T. »

Sorry, hätte mir mal die die Bedeutung des Status näher ankucken sollen.

Den Begriff Rausatz kannte ich nicht; danke für den Hinweis!

Darum geht es mir aber gar nicht. Prinzipiell möchte ich Worttrennungen auf Folien natürlich vermeiden, also einen Flatter- und keinen Rausatz haben. Nun neigt die deutsche Sprache zu Komposita und da erscheint es mir sinnvoll, in Einzelfällen eine Worttrennung einzufügen.

Bartman hat ja einen Lösungsansatz aufgezeigt. Wie gesagt, erscheint mir dieser zu umständlich. (Wenn ich es richtig sehe, geht der Ansatz aber auch eher in Richtung Rausatz.)

Mein Ansatz mit den babelshorthands führt zu einem Teilerfolg. Meine Frage zielt also eher darauf, wie man aus diesem (oder auch auf anderem, ähnlich einfachem Wege) einen ganzen Erfolg machen kann.

R.

Besserwisser

Beitrag von Besserwisser »

Wenn Du keinen Rausatz, sondern Flattersatz haben willst, dann ist es korrekt, dass das lange Wort nicht getrennt, sondern in die nächste Zeile umbrochen wird. Dein Problem ist, dass Du offenbar inkonsistentes Verhalten willst. Aber auch das kann man haben:
\documentclass{beamer}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}
\usepackage{ragged2e}
\usepackage{blindtext}
\RaggedRightRightskip=0pt plus 4em % Flatterzone etwas größer als normal
\newcommand*{\hyphenate}[1]{{\enablehyphenation #1}}
\begin{document}
\RaggedRight% Rausatz statt Flattersatz.
\disablehyphenation% Trennung aus
\begin{frame}
  Ein langes Wort ist \hyphenate{Oberweserdampfschifffahrtsgesellschaftskapitän}. Danach kommt ganz viel Text.
\end{frame}
\begin{frame}
  Ein langes Wort ist \hyphenate{Oberweser\-dampf\-schiff\-fahrts\-gesellschafts\-kapitän}. Danach kommt ganz viel Text.
\end{frame}
\begin{frame}
\blindtext
\end{frame}
\end{document}

Robert T.

Beitrag von Robert T. »

Richtig, ich wünsche mir inkonsistentes Verhalten (und bin mir dessen sehr wohl bewusst). Wie dargestellt wird dieser Wunsch sogar mit "= unterstützt, führt allerdings zu den oben geschilderten Problemen.

Ich fasse es für mich mal so zusammen, dass es keine einfache (!) Lösung für das von mir geschilderte Problem gibt.

Meinen Dank an alle Hinweisgeber

R.

Besserwisser

Beitrag von Besserwisser »

:?: Ich habe dir doch gezeigt, wie du einzelne Worte ausnahmsweise doch trennen lassen kannst (wahlweise sogar automatisch oder nur an bestimmten Stellen), obwohl der Rest nicht getrennt wird. Für mich ist das eine einfache Lösung.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Robert T. hat geschrieben:Richtig, ich wünsche mir inkonsistentes Verhalten (und bin mir dessen sehr wohl bewusst). Wie dargestellt wird dieser Wunsch sogar mit "= unterstützt, führt allerdings zu den oben geschilderten Problemen.

Ich fasse es für mich mal so zusammen, dass es keine einfache (!) Lösung für das von mir geschilderte Problem gibt.
Du musst die Penalties richtig setzen. In der Standardeinstellung versucht tex Trennungen zu vermeiden. Da kannst du soviele Trennstellen einbauen wie du willst, sie werden ignoriert, wenn es eine (preiswerte) Möglichkeit ohne gibt.
\documentclass{beamer}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}



\begin{document}
 \begin{frame}
 \pretolerance=-1
 \hyphenpenalty=0
 \finalhyphendemerits=0
  Ein langes Wort ist Oberweserdampfschifffahrtsgesellschaftskapitän. Danach kommt ganz viel Text.

  Ein langes Wort ist Oberweserdampfschifffahrts\-gesellschaftskapitän. Danach kommt ganz viel Text.


 \end{frame}
\end{document}

Robert T.

Beitrag von Robert T. »

Vielen Dank für Eure Antworten. Beide klappen soweit, setzen aber auf grundlegegende Änderung am Dokument (penalties/Vergrößerung der Flatterzone).

Mir geht es eher darum, dass ich im konkreten Fall glaube, es besser zu wissen als der Algorithmus und deshalb (ausnahmsweise!) per Hand eingreifen will. Der Hinweis auf \- im beameruserguide und, dass es mit dem Babelshorthand "= klappt, hat mich dazu verleitet, zu glauben, dass dies mit einem einzigen Kommando möglich ist.

Dieses händische Eingriffen ist sicherlich nicht der typische LaTeX-Weg. Aber TeX wurde ja auch entwickelt, um Bücher ordentlich zu setzen und nicht um Folien zu gestalten. Ich bin mir mittlerweile auch gar nicht mehr sicher, ob LaTeX dazu das geeignete Werkzeug ist. (Nur: bezüglich der Typografie ist es allem anderen, was ich in dem Bereich kenne weit überlegen und ich beherrsche es (einigermaßen).)

Danke noch mal für die Unterstützung

R.

Besserwisser

Beitrag von Besserwisser »

Robert T. hat geschrieben:Beide klappen soweit, setzen aber auf grundlegegende Änderung am Dokument (penalties/Vergrößerung der Flatterzone).
:?: Die grundlegende Änderung bei meinem Beispiel ist, manuelle Trennung einzelner Wörter zu ermöglichen. Ist das nicht die Änderung, die du haben wolltest?

Nun, ganz ohne Änderung an den Einstellungen kann man natürlich auch eine komplett manuelle Trennung erzwingen:
\documentclass{beamer}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}

\begin{document}
 \begin{frame}
  Ein langes Wort ist Oberweserdampfschifffahrts\char\defaulthyphenchar\linebreak
  gesellschaftskapitän. Danach kommt ganz viel Text.
 \end{frame}
\end{document}
oder wenn dir das zu lang ist:
\documentclass{beamer}

\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{german}
\renewcommand\-{\char\defaulthyphenchar\linebreak}

\begin{document}
 \begin{frame}
   Ein langes Wort ist Oberweserdampfschifffahrts\-gesellschaftskapitän. Danach kommt ganz viel Text.
 \end{frame}
\end{document}
Aber daran ist sicher nichts besser als an den gezeigten Lösungen. Letzteres ist außerdem sehr viel eher eine grundlegende Änderung.

Antworten