PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Globale Trennzeichen



gesgesges
22-01-2008, 15:27
Grüße euch, ich habe folgendes Problem:

LaTeX trennt das folgende Wort nicht richtig:

"P-Kompaktifizierung"

Ich habe versucht mit den folgenden Befehlen LaTeX die Trennung beizubringen:

\hyphenation{Halb-grup-pen-kom-pak-ti-fi-zier-ung}
\hyphenation{Halb-grup-pen-kom-pak-ti-fi-zier-ung-en}
\hyphenation{Kom-pak-ti-fi-zier-ung}
\hyphenation{Kom-pak-ti-fi-zier-ung-en}
\hyphenation{-Kom-pak-ti-fi-zier-ung}
\hyphenation{-Kom-pak-ti-fi-zier-ung-en}
\hyphenation{P-Kom-pak-ti-fi-zier-ung}
\hyphenation{P-Kom-pak-ti-fi-zier-ung-en}

Diese habe ich jeweils vor \begin{document} eingebunden habe. Das zusätzliche "-" im Wort "P-Kompaktifizierung" scheint LaTeX allerdings durcheinander zu bringen. LaTex trennt zwar, wenn nötig, das P vom Rest des Wortes, behandelt den Rest allerdings als untrennbar.

Hat jemand eine Lösung?

localghost
22-01-2008, 15:42
Jetzt hast Du die Wahl. Benutzt Du MiKTeX, kannst Du im Quelltext den Bindestrich auch anders eingeben.

P"=Kompaktifizierung
Etwas universeller, weil mit jeder LaTeX-Distribution lauffähig, ist die globale Änderung des Trennzeichens (im Vorspann).

\defaulthyphenchar=127
Damit wird der Bindestrich zum Trennstrich (ja, es gibt einen Unterschied). Dieses Vorgehen funktioniert aber nur bei der Verwendung von Type1-Schriften. Im Vorspann muss also auch

\usepackage[T1]{fontenc}
stehen. Das ist ist sowieso ratsam. Die Methode versagt allerdings (aus mir unbekannten Gründen) bei Konstrukten wie

\textsc{Zeeman}-Effekt
Da hilft dann (zumindest bei MiKTeX) wieder die erste Methode. Brauchbar ist das aber allemal.

(Quelle: Anselm Lingnau, LaTeX Hacks, Hack #3)


Grüße und ein herzliches Willkommen an Board von
Thorsten

rais
22-01-2008, 16:25
Moin Thorsten,
bei mir (TeXlive 2007) funktioniert sogar nur die erste Methode:


\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\defaulthyphenchar=127
\begin{document}
\parbox{2em}{%
P"=Kompaktifizierung

\noindent\hrulefill

P-Kompaktifizierung
}
\end{document}

MfG,

localghost
22-01-2008, 16:28
Die erste Methode funktioniert bei mir unter openSUSE 10.3 und TeXLive 2007 gar nicht. Es wird im Text ganz normal als "= gesetzt. Deshalb habe ich lange nach einer anderen Möglichkeit gesucht und war froh, als ich die hier vorgestellte gefunden habe. Ist da vielleicht irgendwo eine Schraube, an der man bei TeXLive drehen könnte?

Nachtrag:
Ich versteh die Welt nicht mehr. Von deinem Beispiel erhalte ich das selbe Ergebnis. Also muss ich den Verursacher wohl woanders suchen. Aber die zweite Methode funktioniert. Warum hier nicht, ist mir ein Rätsel.

rais
22-01-2008, 16:51
hmm, ich hab hier noch OpenSuSE 10.2 -- das hatte ja noch teTeX 3 im Original dabei...eine SuSE-typische Erweiterung vielleicht?
Ich hab mal ein \listfiles vorangestellt:


*File List*
article.cls 2005/09/16 v1.4f Standard LaTeX document class
size10.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
babel.sty 2005/11/23 v3.8h The Babel package
ngermanb.ldf 2004/02/20 v2.6m new German support from the babel system
***********

...irgendwo muss diese Schraube doch stecken.;-)
MfG,

localghost
22-01-2008, 16:56
Die Liste meiner benutzten Dateien sieht genau gleich aus. Habe unten gerade noch mal einen Nachtrag geschrieben.

*File List*
article.cls 2005/09/16 v1.4f Standard LaTeX document class
size10.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
babel.sty 2005/11/23 v3.8h The Babel package
ngermanb.ldf 2004/02/20 v2.6m new German support from the babel system
***********


Nachtrag:
Ich glaube die Lösung gefunden zu haben. Ich empfinde sie als sehr kurios. Man bearbeite folgendes Minimalbeispiel und sehe sich das Ergebnis an.

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\title{P"=Kompaktifizierung}
\author{localghost}
\date{22.01.2008}

\begin{document}
P"=Kompaktifizierung
\end{document}

Gleiches gilt für Fußzeilen mit fancyhdr. Für KOMA Script habe ich das noch nicht getestet. Bei MiKTeX tritt dieser Effekt nicht auf. Ich werde das aber nochmal überprüfen.

sommerfee
22-01-2008, 17:08
Die erste Methode funktioniert bei mir unter openSUSE 10.3 und TeXLive 2007 gar nicht. Es wird im Text ganz normal als "= gesetzt. Deshalb habe ich lange nach einer anderen Möglichkeit gesucht und war froh, als ich die hier vorgestellte gefunden habe. Ist da vielleicht irgendwo eine Schraube, an der man bei TeXLive drehen könnte?

Die Schraube sollte eigentlich das dt. Babel-Paket sein, zumindest ist "= dort unter dem Abschnitt "The German language" dokumentiert, und auch zu vor-Babel-Zeiten gab es das schon in german.sty.

Meine Idee wäre: Der Editor wandelt das " ggf. in ein ähnlich aussehendes Sonderzeichen um? Funktionieren denn "a, "o, "u, "s etc.?

Liebe Grüße,
Axel

localghost
22-01-2008, 17:19
[...] Meine Idee wäre: Der Editor wandelt das " ggf. in ein ähnlich aussehendes Sonderzeichen um? Funktionieren denn "a, "o, "u, "s etc.?[...]
Danke für diesen Hinweis. Diese Art der Eingabe für Umlaute funktioniert bei Kile 2.0 tadellos. Ich habe gerade nochmal einen Nachtrag geschrieben und eine PDF-Datei angehängt. Da kann man das sehr schön sehen. Aber was nützt es mir, wenn auf anderen Maschinen nicht das gleiche heraus kommt. Das Ergebnis ist übrigens unabhängig von der Eingabe-Codierung mit inputenc.

sommerfee
22-01-2008, 20:27
Ich habe gerade nochmal einen Nachtrag geschrieben und eine PDF-Datei angehängt. Da kann man das sehr schön sehen.

Dein Minimalbeispiel lädt aber gar kein Babel!? :confused:

Ansonsten ist zu beachten, daß das Babel-Paket seine Einstellungen/Kommandos erst bei \begin{document} aktiviert. (Deswegen klappt z.B. auch ein \renewcommand\figurename{Fig.} nicht mit Babel, zumindest nicht vor \begin{document}.)

Man vergleiche:



\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}

\title{P"=Kompaktifizierung "A}
\author{localghost}
\date{22.01.2008}

\begin{document}
\maketitle

P"=Kompaktifizierung "A
\end{document}


mit



\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}

\begin{document}
\title{P"=Kompaktifizierung "A}
\author{localghost}
\date{22.01.2008}
\maketitle

P"=Kompaktifizierung "A
\end{document}




Aber was nützt es mir, wenn auf anderen Maschinen nicht das gleiche heraus kommt.

Ich denke schon, daß auf allen Maschinen das gleiche herauskommt.

Liebe Grüße,
Axel

localghost
22-01-2008, 20:42
Jetzt ist mir alles klar. Ich war bisher gewohnt, die Angaben zu Titel, Autor und Datum (wenn in dieser Form benötigt) immer im Vorspann zu machen. Und babel habe ich (warum auch immer) im Code hier einfach nur vergessen. Das Beispiel ist bei mir mit babel entstanden. Da ich bei größeren Dokumenten (auch Artikel) immer die titlepage-Umgebung verwende, gehört das wohl jetzt der Vergangenheit an. Mir war das an einem älteren Dokument mal aufgefallen, in dem ich eben noch keine Titelseite benutzt hatte.

Blieben dann nur noch die Deklarationen, die man mit fancyhdr oder scrpage2 ja im Vorspann machen muss. Aber das relativiert sich ja, weil man in Kopf- oder Fußzeilen eigentlich gar keine Silbentrennung benötigt.


MfG
Thorsten

sommerfee
22-01-2008, 20:59
Blieben dann nur noch die Deklarationen, die man mit fancyhdr oder scrpage2 ja im Vorspann machen muss.

Die Babel-Features lassen sich auch schon ggf. im Vorspann aktivieren. Ich denke in der Regel sind sie dort deaktiviert, weil das Einbinden so mancher Pakete danach Probleme machen könnte, zumindest gab es da in der Vergangenheit (mit german.sty, wo die Features sofort nach dem Laden aktiviert waren) einige Probleme. Sicherheitshalber sollte man also zuerst alle Pakete laden, erst dann die Sonderbehandlung von " aktivieren, und dann die Befehle verwenden, für die man die Sonderbehandlung braucht. Oder aber man schaltet sie nach der Verwendung aus, das geht natürlich auch.

Ein Beispiel:



\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}

\shorthandon{"}
\title{P"=Kompaktifizierung "A}
\author{localghost}
\date{22.01.2008}
\shorthandoff{"} % kann ggf. entfallen

\begin{document}
\maketitle

P"=Kompaktifizierung "A
\end{document}


Gruß,
Axel

localghost
22-01-2008, 21:14
Die Babel-Features lassen sich auch schon ggf. im Vorspann aktivieren. [...]
Die Befehle \shorthandon und \shorthandoff sind mir noch aus der Anleitung von babel und aus Band 2 vom Kopka einigermaßen bekannt. Aber ich habe nie so recht verstanden, was man damit so alles anfangen kann. Bis jetzt. Im Kopka wird auch erwähnt, das diese Befehle für Normalanwender eher untergeordnete Bedeutung haben.