Hallo zusammen,
die Word-Vorlage (ja, ich weiß...) für mein Dokument sieht vor, dass die Überschriften (chapter, section und subsection) zweisprachig (Deutsch und Englisch) gesetzt werden, wobei lediglich der deutsche Text im Kolumnentitel und im Inhaltsverzeichnis erscheinen sollen.
Hinzu kommt, dass die englische Übersetzung anders formatiert wird. Nämlich in \itshape\normalsize\mdseries
¹.
Hab schon etwas gebastelt, welches sich der optionalen Parameter für \chapter
¹ bedient. Hier ist mein Minimalbeispiel:
\documentclass[ 11pt, pagesize, twoside=true, openright, %Kapitel immer auf rechter Seite beginnen headsepline=true, footsepline=false, BCOR=12mm, %Bindekorrektur von 12mm DIV=14, %Satzspiegel parskip=half+, %halbe Leerzeile nach Absatz, mind. 1/4 einer Zeile Freiraum in der letzten Zeile headings=big, %medium, small chapterprefix=false,% Kapitel anschreiben als Kapitel numbers=noenddot, %Anhang heißt nicht "A. Bla" sondern "A Bla" headlines=1.75, %Kopfzeilen nicht im 1,5 Zeilenabstand ngerman, ]{scrreprt} \usepackage[USenglish,ngerman,main=ngerman]{babel}%% zweisprachig \usepackage[ automark, %automatisch lebende Kolumnentitel in der Kopfzeile headsepline, %Linie unter der Kopfzeile plainheadsepline, ]{scrlayer-scrpage} %Kopfzeilen anzeigen \pagestyle{scrheadings} %Kopf- und Fußzeile scrguide S. 223f \ohead[\pagemark]{\pagemark} \ihead[]{\headmark} \ofoot[]{} \usepackage{blindtext} \usepackage{hyperref} %Schriftart für Sonderformate, die in helvet nicht vorhanden sind \RequirePackage{lmodern}% http://ctan.org/pkg/lm %Schriftart Helvetica \RequirePackage[scaled]{helvet} \renewcommand{\familydefault}{\sfdefault} %Zeichensatz \RequirePackage[utf8]{inputenc} %damit Umlaute richtig aus dem PDF kopiert werden können \RequirePackage[T1]{fontenc} \newcommand{\kapitel}[2]{ % \chapter[#1]{% % #1 \vspace{-10pt} \linebreak #1 \linebreak \itshape\normalsize\mdseries\foreignlanguage{USenglish}{#2} % } } \newcommand{\abschnitt}[2]{ % \section[#1]{% #1 \linebreak \itshape\normalsize\mdseries\foreignlanguage{USenglish}{#2} % } } \newcommand{\subabschnitt}[2]{ % \subsection[#1]{% #1 \linebreak \itshape\normalsize\mdseries\foreignlanguage{USenglish}{#2} % } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \selectlanguage{ngerman} \tableofcontents \kapitel{Deutsches Kapitel welches über mehrere Zeilen geht um es genauer zu testen und zu schauen wie es nachher aussieht}{English Chapter which also is a little longer than the standard chapter heading just for testing how it would look like if it is more than one single line} \abschnitt{Deutscher Abschnitt}{Englischer Abschnitt} \subabschnitt{Deutscher Sub-Abschnitt}{Englischer Sub-Abschnitt} \blindtext[9] \end{document}
Mein Problem ist jetzt noch, dass die Zeilen in der englischen \chapter
¹-Überschrift zu hoch sind. Hab schon mit \baselinestretch
¹ rumprobiert, es aber nicht hinbekommen.
Am liebsten hätte ich jedoch eine Lösung, bei der ich nach wie vor \chapter
¹ und \section
¹, \subsection
¹ verwenden könnte.
Vielleicht dann so: \chapter[Text für toc]{Deutscher Text}{Englischer Text}
¹. Aber das wäre dann die Kür ;-)
[Admin-Edit:]
Möglicher Ansatz
Da in den Überschriften keine Absätze erlaubt sind, musst man dort zum Beispiel mit einer Tabelle arbeiten, um unterschiedliche Zeilenabstände zu erreichen. Wenn die Einträge in der Kopfzeile und im Inhaltsverzeichnis immer übereinstimmen, wäre das folgende ein möglicher Ansatz:
Das funktioniert allerdings nur für die Ebenen chapter, section und subsection sowie für addchap und addsec, aber nicht für deren Sternversionen. Möchte man eine solche Überschrift ohne Eintrag ins Inhaltsverzeichnis bzw. die Kopfzeile, muss man ein leeres optionales Argument angeben.
Als Beispiel
Gruß
Elke
Vielen Dank, Elke! Auch für
Vielen Dank, Elke! Auch für die Vereinfachungen im Header.
Nachdem ich Koma-Script von 3.12 auf 3.16 aktualisiert hatte, klappte es dann auch ;-)
Was mir jetzt noch nicht gefällt, ist, dass der vertikale Abstand zwischen deutschem und englischem Text bei chapter, section und subsection unterschiedlich groß ausfällt. Wie bekomme ich den gleich?
Grüße
Stephan
Alternative mit \parbox
Dann nimm statt einer Tabelle für die gesamte Überschrift eine
\parbox
nur für die zusätzliche englische. In die kann man eine\rule{0pt}{2ex}
als unsichtbare Stütze einbauen.Gruß
Elke
Noch nicht ganz
Hmm, es ist zwar schon besser, aber die Abstände sind noch nicht ganz gleich.
Seltsam finde ich des Weiteren, dass die Abstände zwischen deutschem und englischem Text auch noch davon abhängen, ob die Überschrift in eine Zeile passt, oder mehrere benötigt werden (siehe Minimalbeispiel unten), was besonders bei
\chapter
auffällt.Minimalbeispiel:
Der Unterschied
Der Unterschied zwischen ein- und mehrzeiligen englischen Überschriften lässt sich vermeiden, wenn die
\parbox
mit der Option[t]
verwendet, so dass deren oberste Zeile auf der Grundlinie eingefügt wird.\rule
habe ich wieder herausgenommen. Damit ist der Abstand zwischen der untersten Grundlinie der deutschen Überschrift und der obersten Grundlinie der englischen genau so groß wie der Abstand zwischen den Grundlinien innerhalb der deutschen Überschrift. Der Abstand hängt also von der Schriftgröße ab, was ich auch sinnvoll finde.Wenn der Abstand zwischen den beiden Überschriften immer gleich sein soll, dann kannst Du das durch eine einheitliche Größe der deutschen Überschriften erreichen oder Du vergrößert ihn mit
\usekomafont{chapter}\rule{0pt}{\ht\strutbox}
vor der\parbox
bei allen Überschriften auf den Abstand, den sie bei\chapter
haben:Gruß
Elke
Perfekt
Die zweite Variante ist für mich genau richtig. Vielen Dank, Elke!
Ich habe lediglich den Abstand mittels
\vspace{-6pt}
noch etwas verringert. Gefällt mir (als Laie) etwas besser als der große Abstand der chapter-Schriftart.Umdefinieren von \chapter
Jetzt, wo wir schon so weit sind, ist es auch noch möglich, die Kür aus meinem Anfangsposting zu erfüllen?
Also
\chapter, \section, \subsection
umzudefinieren, dass sie einen zusätzlichen Parameter bekommen?Dann in der Art von
\chapter[Text für toc]{Deutsche Überschrift}{Englische Überschrift}
?Vom Ansatz her hatte ich an sowas gedacht
\def\chapter[#1]#2#3{\bihead[#1]{chapter}{#2}{#3}}
Kenne mich da aber leider zu wenig mit TeX aus.
Kann man ein Makro überschreiben, in der Neudefinition aber wiederum die "alte" Makroversion aufrufen?
Keine gute Idee
Zunächst kann man in der Definition eines Befehls nicht den Befehl verwenden. Das gibt eine Endlosrekursion. Nicht vergessen: TeX ist eine Makrosprache. Bei der Expansion werden Makros so lange durch ihre Definition ersetzt, bis nur noch TeX-Primitive übrig sind. Man müsste also erst die Bedeutung beispielsweise von
\chapter
einem neuen Makro zuweisen, damit man dann dieses in der Umdefinierung von\chapter
verwenden könnte.Aber: Das ist in diesem Fall ganz und gar nicht zu empfehlen. Gliederungsbefehle werden nämlich auch für Verzeichnisüberschriften verwendet. Dort dürfte dann beispielsweise
\chapter
kein zusätzliches Argument erwarten, weil es nicht mit einem zusätzlichen Argument aufgerufen wird. Für die Verzeichnisse von KOMA-Script könnte man das noch relativ einfach ändern, aber was ist mit Verzeichnissen von anderen Paketen, die nichttocbasic
verwenden? Ich würde das daher bleiben lassen.Wenn man trotzdem damit experimentieren will, sollte man zumindest dafür sorgen, dass für die Sternvariante der Überschriftsbefehle weiterhin die alte Definition mit nur einem Argument verwendet wird:
Bei Bedarf kann man jetzt auch weiterhin
\oldchapter
,\oldsection
und\oldsubsection
verwenden, wenn man die einsprachige Version der Befehle benötigt.Vielen Dank!
Ich danke dir vielmals für die Ausführungen und das Codebeispiel, Markus!
Die
\chapter
-Umdefinitionen werde ich in mein Dokument aufnehmen und es drauf ankommen lassen, ob sich da noch Probleme ergeben. Notfalls wechsle ich halt wieder auf die\bihead
-Variante.Ich rate trotzdem davon ab
Schon ein
\RedeclareSectionCommand[afterskip=1\baselineskip]{section}
nach\renewbicommand{section}
genügt, damit das in die Hose geht. Ebenso geht es total in die Hose, wenn man Optionen wielistof=numbered
verwendet. Ich würde wirklich empfehlen für die zweisprachigen Überschriften neue Befehle zu definieren:Wie zu sehen ist, kann man damit auch die Sternformen verwenden.
Überredet
Ok, du hast mich überredet ;-)
Mit
\biirgendwas
kann ich letztlich auch leben! Ich verwende jetzt deinen letzten Vorschlag.Ich hatte ja gehofft, dass man sowas wie das Überladen von Funktionen in C++ auch mit LaTeX hinbekommt. Dann könnten
\chapter{}
und\chapter{}{}
friedlich koexistieren und man hätte aus der zweiten Version die erste aufrufen können. Aber das hattest du ja schon erklärt.Seitenumbruch nach deutscher Überschrift
So langsam wird es mir peinlich...
In der Zwischenzeit habe ich etwas mehr Text geschrieben. Jetzt ist es leider passiert, dass zwischen deutscher und englischer Überschrift ein Seitenumbruch entstanden ist. Habe schon an verschiedene Stellen
\nopagebreak
gesetzt, ohne Erfolg.Im folgenden Minimalbeispiel passiert es zwischen Seite 4 und 5:
Wie kann ich die beiden Überschrifts-Sprachen vor einem Seitenumbruch schützen?
Verschiedene Möglichkeiten
Beispielsweise mit
\nobreak
an den richtigen Stellen:Eine andere Möglichkeit wäre eine zusätzliche
\parbox
für den kompletten Text der Überschrift.BadBoxes
Hmm, also der Seitenumbruch ist jetzt weg mit den
\nobreak
s. Da hatte ich wohl einfach nicht genügend davon gesetzt gehabt. Danke.Mit bloßem Auge war mir das vorher nicht aufgefallen, jetzt hab ich allerdings mal nachgemessen und festgestellt, dass der Abstand zwischen deutschem und englischem Text nicht gleich ist.
Hab dann das hier mit
\parbox
gebastelt, welches, was den Zeilenabstand her angeht, auf der Lösung von Elke basiert. Außerdem konnte ich den\sbox
-Teil streichen.Hier ist jetzt der Abstand zwischen den Überschriften gleich und es kommt zu keinem Seitenumbruch zwischen den Sprachen.
Leider bekomme ich jetzt zu jeder Überschrift eine BadBox-Meldung.
\parbox ist zu breit
Die Meldungen wegen zu voller Boxen bekommst Du, weil Du die Breite der
\parbox
mit\textwidth
zu groß wählst. Du musst davon noch den Platz abziehen, den die Gliedungsnummern benötigen. Deshalb haben wir diese in\headnumbox
gespeichert und die Breite dieser Box von\linewidth
abgezogen.othersectionlevelsformat
Das passiert, wenn man nicht so recht weiß, was man tut ;-)
Danke für den Hinweis!
Nach längerem Basteln bin ich nun zu einer Variante gekommen, bei der keine Seitenumbrüche entstehen sowie der Abstand bei
\chapter, \section, \subsection und \subsubsection
immer gleich groß ist.Mir war noch aufgefallen, dass in den bisherigen Varianten von Markus die Erweiterung in
\sbox\headnumbox{\csname\@commandname format\endcsname}
nicht richtig funktionierte, weil es bspw.\sectionformat
nicht gibt und stattdessen (laut scrguide)\othersectionlevelsformat
verwendet werden sollte.Hier also mein Code:
Lässt sich die auskommentierte Zeile noch abändern, dass sie die 4 folgenden Zeilen ersetzt?
Ansonsten hoffe ich, dass das so OK ist, wie ich das jetzt verwende. Oder sind noch grobe Schnitzer enthalten?
Nö
\sectionformat
etc. werden bereits seit KOMA-Script 3.15 standardmäßig definiert. Wenn Du noch eine ältere Version von KOMA-Script verwendest, erklärt das eventuell so manches Deiner Probleme.\othersectionlevelsformat
kann nicht mehr empfohlen werden. Und dass es eine gute Idee ist, bei kleinen Überschriftengrößen mal eben einen negativen Abstand von -18pt einzufügen, wage ich ebenfalls zu bezweifeln. Das ist bei normalen Schriftgrößen mehr als ein Zeilenabstand. Aber, wenn Dir das so gefällt …Zeilenabstand passt leider noch nicht
Naja, jetzt habe ich mich wenigstens mal mit ein paar Latex-Interna beschäftigen können ;-)
Jetzt ist garantiert Koma-Script 3.16 aktiv. Ich schreibe sowohl unter Linux mit Texlive als auch unter Windows mit Miktex. Die Windows-Kiste hatte ich aktualisiert, allerdings musste der Rechner wohl mal neu gestartet werden, damit die Aktualisierung auch wirklich greift.
Ich verwende jetzt den Code von Markus aus http://www.komascript.de/comment/4941#comment-4941,
wobei ich lediglich die Zeile
\normalsize\vskip\ht\strutbox\nobreak
auskommentiert habe, um den Abstand besser einschätzen zu können.Das Ergebnis auf meinem Rechner habe ich hier hochgeladen: Bild. Zu sehen ist, dass der vertikale Abstand zwischen deutscher und englischer Überschrift nicht identisch ist. Die beiden Linien haben jeweils den gleichen Abstand zueinander, um den Unterschied zwischen chaper, section und subsection zu verdeutlichen.
Warum stimmt der Abstand nicht überein?
Unterschiedliche Schriftgrößen
Wäre schlimm, wenn der Abstand zwischen Grundlinie und Versalhöhe der folgenden Zeile unabhängig von der Schriftgröße wäre. Entweder würden bei großen Größen die Zeilen ineinander laufen oder bei kleinen Größen die Zeilen extrem weit voneinander entfernt sein. Und wenn Du schon vergleichen willst, dann bitte min. mit
\frame{Mgj}
im englischen und deutschen Text. Das zeigt sehr gut, wie dicht sich die Zeilen wirklich kommen. Genau genommen müsste man sogar\frame{\strut Beispieltext}
und\frame{\strut Exampletext}
verwenden, damit man sieht, wie hoch und tief die Zeilen tatsächlich sind.Wenn Du also alle Abstände gleich haben willst, dann musst Du überall gleiche Größen verwenden. Wenn die Größen unterschiedlich sind, müssen auch die Abstände an die unterschiedlichen Größen angepasst sein. Alles andere wäre unsinnig.
Welche Schriftart meinst du
Welche Schriftart meinst du bei
Wäre schlimm, wenn der Abstand zwischen Grundlinie und Versalhöhe der folgenden Zeile unabhängig von der Schriftgröße wäre
?Die Schriftart des englischen Textes ist ja immer gleich
\normalsize
. Lediglich die deutsche Überschrift-Schriftart variiert je nach chapter, section oder subsection. Ist es in diesem Fall auch unsinnig, dass die Zeilenabstände gleich sind?Hab mal ein paar Frames eingefügt:
Das Ergebnis ist hier zu sehen.
Soltlen nich auch die Boxen bei subsections aufeinander liegen?
Eben
Wenn zwei Texte in unterschiedlicher Größe untereinander stehen, kannst Du doch nicht einfach nur die Größe des unteren Textes berücksichtigen. Da Zeichen nicht nur auf der Grundlinie stehen, sondern auch darunter ragen, spielt die Schriftgröße des oberen Textes natürlich auch eine Rolle. Deshalb hat eine Zeile nicht nur eine Höhe, sondern auch eine Tiefe. Die wird in meiner Lösung bereits beschnitten. Deshalb gehören die negativen
\vskip
eigentlich komplett entfernt.Und ja, es hat einen Grund, weshalb ich in meinem Code bereits vor der
\parbox
auf\normalsize
umgeschaltet habe. Das einfach mal eben zu ändern, hat natürlich Konsequenzen.Die beiden
\vskip
an der Stelle hatte ich übrigens nur, weil Du Dich zuvor über die Abstände beschwert hattest. Ich würde die komplett weglassen. Sie sind eigentlich falsch!Meiner Meinung nach, wäre die einzig korrekte vertikale Anordnung:
Vielen Dank!
Vielen Dank für deine Ausführungen. Du hast mich überzeugt (und knallhart meine Fehler aufgedeckt)! Dein letztes Beispiel gefällt mir optisch gut.
Anfangs hatte ich immer krampfhaft versucht, die Word-Vorlage mit den identischen Abständen 1:1 umzusetzen und dadurch die Vorteile von Latex vernachlässigt. Ich denke, da bin ich nicht der einzige, der eine Word-Vorlage für irgendwas adaptieren muss, die irgend ein Mensch ohne typografischen Sachverstand produziert hat. Aber das ist ein anderes Thema :-)