Trennung nach Bindestrich vor schließender Klammer

Schriftbild, Absätze und Auflistungen einstellen


royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Trennung nach Bindestrich vor schließender Klammer

Beitrag 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?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von KOMA am Mo 15. Jun 2009, 11:20, insgesamt 2-mal geändert.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag 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.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag 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.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag 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" ?
Zuletzt geändert von royalware am Mo 15. Jun 2009, 11:18, insgesamt 1-mal geändert.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag 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 :-)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von KOMA am Mo 15. Jun 2009, 16:07, insgesamt 1-mal geändert.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag 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.

Antworten