Seite 1 von 2

Trennung nach Bindestrich vor schließender Klammer

Verfasst: Mo 15. Jun 2009, 10:48
von royalware
Hallo,

ich habe grad einen ungünstigen Fall, bei dem Latex ein Wort wie folgt trennt:
[...] (Programmier-
)Sprache [...]
Das sieht natürlich sehr bescheiden aus. Ein komplettes Minimalbeispiel zum Anschauen kann ich leider schlecht posten, da der Fall in meinem Glossar auftritt. Aber hier meine Präambel:
\documentclass[a4paper,dvipdfm,ngerman,11pt]{report}

\usepackage{graphicx,xcolor,amsmath,amssymb,amsbsy,fancyhdr,
%	showkeys,                      % zeigt \labels an	% to be removed
    soul,                          % Text hervorheben mit \hl{text}
	parskip,                       % knappe Leerzeile statt hängender Einzüge zw. Absätzen
	setspace} \setstretch{1.25}    % Zeilenabstand ändern

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[babel,german=quotes]{csquotes}  % Anführungszeichen durch \enquote{text}

\PassOptionsToPackage{hyphens}{url} % für \url{...} und Umbrüche nach '-' erlauben
\usepackage[
	dvipdfmx, breaklinks=true, colorlinks=true, linkcolor=blue,
	pdfstartview=Fit, pdfpagelayout=SinglePage, %oder OneColumn
	bookmarksopen=true, bookmarksnumbered=true]
	{hyperref}

\usepackage[german, textsize=small, color=yellow, colorinlistoftodos]{todonotes}
	\newcommand*{\origtodo}{}			 	% \todo[inline] als Standard
	\let\origtodo\todo
	\renewcommand*{\todo}{\origtodo[inline]}
	\newcommand*{\origmissingfigure}{}		% \missingfigure[figwidth=15cm] als Standard
	\let\origmissingfigure\missingfigure	% \missingfigure{Beschreibung} für fehlendes Bild
	\renewcommand*{\missingfigure}{\origmissingfigure[figwidth=15cm]}

\usepackage[acronym, toc, footnote]{glossaries}
	\makeglossaries

\makeatletter
	\g@addto@macro\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i
	\do\j\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
	\do\x\do\y\do\z\do\&\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
	\g@addto@macro\UrlSpecials{\do\/{\mbox{\UrlFont/}\hskip 0pt plus 1pt}}
	\makeatother

% Setzen sinnvoller Textbegrenzungen für dvips/graphicx
	\setlength{\topmargin}{0cm} \setlength{\headheight}{0.5cm}
	\setlength{\headsep}{0.5cm} \setlength{\textheight}{23.5cm}
	\setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm}
	\setlength{\marginparsep}{0cm} \setlength{\marginparwidth}{0cm}
	\setlength{\textwidth}{16.5cm}

\fancyhf{arial}                         % Festlegung des Aussehens der Header
	\lhead{}                            % und Footer nach Stefan Spiewok
	\chead{\nouppercase{\leftmark}}
	\rhead{\thepage}
	\lfoot{}
	\cfoot{}
	\rfoot{\footnotesize Diplomarbeit}

\renewcommand{\headrulewidth}{0.6pt}	% Breite der Linien unter- und
\renewcommand{\footrulewidth}{0.0pt}	% oberhalb der Header/Footer

\fancypagestyle{plain}{					% Umdefinition des plain-styles, damit auf
	\fancyhf{arial}						% allen Seiten Header und Footer erscheinen
	\lhead{}
	\chead{\nouppercase{\leftmark}}
	\rhead{\thepage}
	\lfoot{}
	\cfoot{}
	\rfoot{\footnotesize Diplomarbeit}
	\renewcommand{\headrulewidth}{0.6pt}
 	\renewcommand{\footrulewidth}{0.0pt}}

\pagestyle{fancy}				% Ende Festlegung des Aussehens der Header und Footer
\setcounter{tocdepth}{3}		% Anzahl der Gliederungsebenen im Inhaltsverzeichnis
\setcounter{secnumdepth}{3}		% Nummerierungen bis Gliederungsebene \subsubsection
Fällt jemandem ein, wie ich das Trennen nach einem Bindestrich unterbinden kann, wenn darauf eine schließende Klammer folgt?

Verfasst: Mo 15. Jun 2009, 10:52
von KOMA
In der Anleitung zu ngerman in der babel-Anleitung findet sich eine ganze Reihe an Shortcuts für Bindestriche mit und ohne Umbruchmöglichkeit. Ansonsten sei darauf hingewiesen, dass die Angabe einer länglichen Präambel, die Angabe eines vollständigen Minimalbeispiels keinesfalls ersetzen kann.

Verfasst: Mo 15. Jun 2009, 10:55
von royalware
Aber ich möchte ja nicht nur in diesem Fall ausschließen, dass an spziell dieser Stelle im Dokument nicht getrennt werden soll, sondern würde es gern global ausschließen, dass so etwas gar nicht erst auftreten kann.

Verfasst: Mo 15. Jun 2009, 11:04
von royalware
Hier jetzt das vollständige Minimalbeispiel:
\documentclass[a4paper,dvipdfm,ngerman,11pt]{report} 

\usepackage{graphicx,xcolor,amsmath,amssymb,amsbsy,fancyhdr, 
%   showkeys,                      % zeigt \labels an   % to be removed 
    soul,                          % Text hervorheben mit \hl{text} 
   parskip,                       % knappe Leerzeile statt hängender Einzüge zw. Absätzen 
   setspace} \setstretch{1.25}    % Zeilenabstand ändern 

\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage[babel,german=quotes]{csquotes}  % Anführungszeichen durch \enquote{text} 

\PassOptionsToPackage{hyphens}{url} % für \url{...} und Umbrüche nach '-' erlauben 
\usepackage[ 
   dvipdfmx, breaklinks=true, colorlinks=true, linkcolor=blue, 
   pdfstartview=Fit, pdfpagelayout=SinglePage, %oder OneColumn 
   bookmarksopen=true, bookmarksnumbered=true] 
   {hyperref} 

\usepackage[german, textsize=small, color=yellow, colorinlistoftodos]{todonotes} 
   \newcommand*{\origtodo}{}             % \todo[inline] als Standard 
   \let\origtodo\todo 
   \renewcommand*{\todo}{\origtodo[inline]} 
   \newcommand*{\origmissingfigure}{}      % \missingfigure[figwidth=15cm] als Standard 
   \let\origmissingfigure\missingfigure   % \missingfigure{Beschreibung} für fehlendes Bild 
   \renewcommand*{\missingfigure}{\origmissingfigure[figwidth=15cm]} 

\usepackage[acronym, toc, footnote]{glossaries} 
   \makeglossaries 

\makeatletter 
   \g@addto@macro\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i 
   \do\j\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w 
   \do\x\do\y\do\z\do\&\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} 
   \g@addto@macro\UrlSpecials{\do\/{\mbox{\UrlFont/}\hskip 0pt plus 1pt}} 
   \makeatother 

% Setzen sinnvoller Textbegrenzungen für dvips/graphicx 
   \setlength{\topmargin}{0cm} \setlength{\headheight}{0.5cm} 
   \setlength{\headsep}{0.5cm} \setlength{\textheight}{23.5cm} 
   \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} 
   \setlength{\marginparsep}{0cm} \setlength{\marginparwidth}{0cm} 
   \setlength{\textwidth}{16.5cm} 

\fancyhf{arial}                         % Festlegung des Aussehens der Header 
   \lhead{}                            % und Footer nach Stefan Spiewok 
   \chead{\nouppercase{\leftmark}} 
   \rhead{\thepage} 
   \lfoot{} 
   \cfoot{} 
   \rfoot{\footnotesize Diplomarbeit} 

\renewcommand{\headrulewidth}{0.6pt}   % Breite der Linien unter- und 
\renewcommand{\footrulewidth}{0.0pt}   % oberhalb der Header/Footer 

\fancypagestyle{plain}{               % Umdefinition des plain-styles, damit auf 
   \fancyhf{arial}                  % allen Seiten Header und Footer erscheinen 
   \lhead{} 
   \chead{\nouppercase{\leftmark}} 
   \rhead{\thepage} 
   \lfoot{} 
   \cfoot{} 
   \rfoot{\footnotesize Diplomarbeit} 
   \renewcommand{\headrulewidth}{0.6pt} 
    \renewcommand{\footrulewidth}{0.0pt}} 

\pagestyle{fancy}            % Ende Festlegung des Aussehens der Header und Footer 
\setcounter{tocdepth}{3}      % Anzahl der Gliederungsebenen im Inhaltsverzeichnis 
\setcounter{secnumdepth}{3}      % Nummerierungen bis Gliederungsebene \subsubsection

\begin{document}

\newglossaryentry{SQL}{
name		=SQL,
description	={\enquote{Structured Query Language}, von der Firma IBM entwickelte Abfragesprache für die relationale Datenbank DB2. Es handelte sich dabei um eine nichtprozedurale (Programmier-)Sprache, die weder Schleifen, Unterprogramme noch Funktionen enthielt}}

An dieser Stelle wird der Glossareintrag \gls{SQL} eingebunden.

\printglossaries

\end{document}
1. latex <Dateiname>
2. makeglossaries <Dateiname>
3. latex <Dateiname>
4. latex <Dateiname>

Jetzt sollte das Problem im Glossar zu sehen sein.

Verfasst: Mo 15. Jun 2009, 11:14
von royalware
Ich sehe jetzt erst, dass Du Deine Antwort bearbeitet hast
KOMA hat geschrieben:Im konkreten Fall ist mir allerdings ins Auge gesprungen, dass Du sowohl babel als auch das Paket german verwendest. Das ist nicht empfehlenswert. Du solltest ausschließlich babel verwenden und german entfernen. Ggf. kann stattdessen babel entfernt und german verwendet werden.
Die Option ngerman beim Laden von babel habe ich auf Deinen Rat (vgl. hier) einbezogen. An welcher Stelle ich das Paket(?) german verwende, kann ich leider nicht nachvollziehen. Oder meinst Du das "ngerman" bei "\documentclass" ?

Verfasst: Mo 15. Jun 2009, 11:16
von KOMA
Dann definiere Dir ein Makro dafür und verwende das an Stelle des Textes, was allerdings nicht einfacher ist, als jedesmal den Shortcut passend zu setzen oder das einmal per Suchen/Ersetzen zu erledigen.

Zwar ist es mit ein paar Tricks möglich, Wörter mit Bindestrichen in die Trennausnahme aufzunehmen (siehe dazu hypht1.tex), aber Klammern sind keine Buchstaben und können deshalb auch nicht einfach in Trennausnahmen aufgenommen werden.

BTW: setspace hat eine Option onehalfspacing und eine gleichnamige Anweisung.

Verfasst: Mo 15. Jun 2009, 11:19
von KOMA
royalware hat geschrieben:An welcher Stelle ich das Paket(?) german verwende, kann ich leider nicht nachvollziehen. Oder meinst Du das "ngerman" bei "\documentcalss" ?
Ah, sorry, ich hatte die eckige Klammer bei einem späteren \usepackage als geschweifte Klammer gelesen. Kann beim schnellen Drüberblicken über eine längliche Präambel passieren. Vergiss also den später hinzugefügten Zusatz, den ich ebenfalls gleich wieder entfernen werde.

Verfasst: Mo 15. Jun 2009, 11:29
von royalware
KOMA hat geschrieben:Dann definiere Dir ein Makro dafür und verwende das an Stelle des Textes, was allerdings nicht einfacher ist, als jedesmal den Shortcut passend zu setzen oder das einmal per Suchen/Ersetzen zu erledigen.
Stimmt. Dann kann ich es auch gleich explizit unterbinden.
KOMA hat geschrieben:Zwar ist es mit ein paar Tricks möglich, Wörter mit Bindestrichen in die Trennausnahme aufzunehmen (siehe dazu hypht1.tex), aber Klammern sind keine Buchstaben und können deshalb auch nicht einfach in Trennausnahmen aufgenommen werden.
Ich habe mir hypht1.tex grad angeschaut, aber konnte damit nicht wirklich viel anfangen. Aber wenn es sowieso nicht möglich ist, Klammern in Trennausnahmen einzufügen, dann ändert das ja auch nichts. Obwohl es mich eigentlich schon wundert... es kann ja keiner ausschließen, dass an dieser "blöden" Stelle grad umgebrochen wird.
KOMA hat geschrieben:BTW: setspace hat eine Option onehalfspacing und eine gleichnamige Anweisung.
Du siehst aber auch alles ;-) Ich habe gelesen, dass es diese Option gibt. Aber falls ich später den Zeilenabstand anpassen möchte, habe ich es so einfacher, wenn ich nur noch den Zahlenwert ändern muss :-)

Verfasst: Mo 15. Jun 2009, 11:50
von KOMA
royalware hat geschrieben:Aber wenn es sowieso nicht möglich ist, Klammern in Trennausnahmen einzufügen, dann ändert das ja auch nichts.
Doch, das ändert schon etwas: Wie ich mit dem "auch" angedeutet habe, kann man natürlich für die Klammer denselben Trick versuchen, der auch schon mit dem Bindestrich in hypht1.tex vorgeführt wird. Allerdings genügt es bei einem raschen Test, bereits, wenn man als \hypenchar statt des Bindestrichs den expliziten Trennstrich der EC-Fonts für die Trennung verwendet (der ist AFAIK sogar etwas hängend entworfen):
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\hyphenchar\font=127

\begin{document}
Test \hspace{23em} Test (Programmier-)Sprache
Test

\showhyphens{Programmier-)Sprache}

\end{document}
Die \showhypens-Anweisung zeigt alle Trennmöglichkeiten auf dem Terminal bzw. der Log-Datei, wobei dort Trennmöglichkeiten mit dem \hyphenchar markiert werden, was in obigem Fall dann i. d. R. als »^^?« ausgegeben wird. Ohne \hypenchar-Anweisung steht da hingegen »-«, funktioniert \showhyphens aber für Wörter mit Bindestrich nicht, weshalb ich noch den kleinen Testtext mit drin habe.

Verfasst: Mo 15. Jun 2009, 12:26
von royalware
Wow... es funktioniert tatsächlich. Der Trick gefällt mir!

Zu "Nebenwirkungen" sollte es beim "Umdefinieren" des Trennstrichs eigentlich nicht kommen. Und optisch konnte ich keine Unterschiede feststellen.