PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zweisprachige Überschriften



slowfox
21-07-2010, 16:12
Moin Moin!

Ich versuche ein zweisprachiges Dokument zu setzen. Den Textkörper setze ich zweisprachig mit Hilfe des pdfcolparcolumns-Pakets, die Tabellen- und Abbildungsbeschriftungen kann ich nun dank Sommerfees Hilfe auch zweisprachig setzen (http://www.mrunix.de/forums/showthread.php?t=68312), nun kämpfe ich noch mit den Textüberschriften.

Meine unbeholfenen Versuche sehen bislang so aus:


\documentclass[english,ngerman]{scrreprt}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage{blindtext}

\newcommand{\bititle}[2]{%
#1\\%
\hspace{2em}\selectlanguage{english}\textit{#2}}

\begin{document}

\chapter{Zweisprachige Überschriften | Bilingual Titles}

\section{Deutscher Titel | English Title}

\blindtext

\section{Deutscher Titel}
\section*{\textit{English Title}}

\blindtext

\section{\bititle{Deutscher Titel}{English Title}}

\blindtext

\end{document}

Was hätte ich gerne? Im Prinzip soll es so aussehen wie im letzten Beispiel, nur dass beide Titel an der gleichen Stelle beginnen. Wie kann ich auslesen, wie weit Latex den Titel einrückt? Das hängt ja auch davon ab, wie viele Abschnitte es gibt (einstellig oder zweistellig), und natürlich in welcher Gliederungsebene ich bin, denn das Ganze soll am besten nicht nur für section sondern auch für chapter und subsection/subsubsection funktionieren (das sind die Gliederungsebenen, die ich nutze).

Ich verstehe leider Latex noch nicht so gut, als dass ich überhaupt wüsste an welcher Stelle ich suchen muss. Ich bin für jegliche Hilfe dankbar.

rais
21-07-2010, 20:34
Moin moin,


Was hätte ich gerne? Im Prinzip soll es so aussehen wie im letzten Beispiel, nur dass beide Titel an der gleichen Stelle beginnen.
als Ansatz vllt


\documentclass[english,ngerman]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}

\newlength\secx
\newlength\secy
\setlength\secy{1ex}%<-- 0pt, und die `Balken' werden unsichtbar
\newif\ifweareintoc\weareintocfalse

\newcommand*\orgtoc{}
\let\orgtoc\tableofcontents
\renewcommand*\tableofcontents{%
\weareintoctrue
\orgtoc
\weareintocfalse
}
\DeclareRobustCommand\leadingspacenotintoc[1]{%
\ifweareintoc\relax\else
\settowidth\secx{#1}%
\addtolength\secx{0.5em}%
\rule{\secx}{\secy}%
\fi
}
\newcommand{\bichapter}[2]{%
\chapter{%
#1\\%
\leadingspacenotintoc{\thechapter}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}
\newcommand{\bisection}[2]{%
\section{%
#1\\%
\leadingspacenotintoc{\thesection}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}

\begin{document}
\tableofcontents
\bichapter{Zweisprachige Überschriften}{Bilingual Titles}
\setcounter{section}{122}
\bisection{Deutscher Titel}{English Title}
\end{document}

MfG

slowfox
22-07-2010, 09:50
Moin Rainer,

danke für deinen Ansatz! Damit konnte ich weiter arbeiten. Ich habe leider das Problem, wenn ich auch Subsections und Subsubsections mit ins TOC aufnehme, dass mir die Gliederungszahlen und die Titel ineinander laufen:


\documentclass[english,ngerman]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}

\newlength\secx
\newif\ifweareintoc\weareintocfalse

\newcommand*\orgtoc{}
\let\orgtoc\tableofcontents
\renewcommand*\tableofcontents{%
\weareintoctrue
\orgtoc
\weareintocfalse
}
\DeclareRobustCommand\leadingspacenotintoc[1]{%
\ifweareintoc\relax\else
\settowidth\secx{#1}%
\addtolength\secx{0.5em}%
\hspace{\secx}%
\fi
}
\newcommand{\bichapter}[2]{%
\chapter{%
#1\\%
\leadingspacenotintoc{\thechapter}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}
\newcommand{\bisection}[2]{%
\section{%
#1\\%
\leadingspacenotintoc{\thesection}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}
\newcommand{\bisubsection}[2]{%
\subsection{%
#1\\%
\leadingspacenotintoc{\thesubsection}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}
\newcommand{\bisubsubsection}[2]{%
\subsubsection{%
#1\\%
\leadingspacenotintoc{\thesubsubsection}%
\begingroup
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}

\setcounter{secnumdepth}{3}

\setcounter{tocdepth}{3}

\begin{document}

\tableofcontents

\bichapter{Zweisprachige Überschriften}{Bilingual Titles}

\setcounter{section}{122}

\bisection{Ein sehr sehr sehr sehr langer Deutscher Titel, was durchaus üblich ist}%
{And also a very long english title, even if this is not so usual}

\section{Nur deutscher Titel}

\setcounter{subsection}{122}

\bisubsection{Deutscher Titel}{English Title}

\subsection{Nur deutscher Titel}

\setcounter{subsubsection}{122}

\bisubsubsection{Deutscher Titel}{English Title}

\subsubsection{Nur deutscher Titel}


\chapter{Nur deutsche Überschrift}

\end{document}

Das passiert nicht nur, wenn ich in die dreistelligen bereich der Gliederungseinträge komme, sondern auch schon im zweistelligen Bereich. Hast Du eine Idee, wie ich das vermeiden kann?

Auch unschön ist derzeit, dass innerhalb der Überschrift ein Seitenwechsel erfolgen kann.

Und ein weiteres Problem: habe ich sehr lange Überschriften, d.h. Überschriften, die mehr als eine Zeile in Anspruch nehmen, dann funktioniert die Einrückung nicht mehr. Wie kann ich das Problem lösen? Die ganze Überschrift in eine Minipage packen?

Ciao, Marco

Schweinebacke
22-07-2010, 10:45
Kurz gesagt: Paket tocstyle (gehört zu KOMA-Script, hat aber eine eigene Anleitung) oder Option toc=flat verwenden.

cookie170
22-07-2010, 12:45
Hallo,

Du löst so langsam alle Probleme bei zweispaltigem Satz mit parcolumn, die ich bisher hatte.

Ich muss in den nächsten Tagen ein längeres Protokoll verfassen und kann hierbei sowohl die zweisprachigen Beschriftungen von Bildern, als auch die zweisprachigen Überschriften sehr gut gebrauchen.

Vielen Dank auch an Rainer und Axel.

Gruß,
Alexander

slowfox
22-07-2010, 13:09
Hi Alexander,

ich habe aktuell 244 Seiten mit zweispaltigem/zweisprachigem Satz, und glaub mir, ich habe noch einige offene Baustellen, die zu lösen sind. Ich gehe nur eines nach dem anderen an, um mich nicht zu verzetteln. Und ich bin froh, hier im Forum so hilfsbereite Unterstützer zu finden, denn mein Latexwissen ist doch sehr begrenzt.

Ciao, Marco

p.s.: Leider ist der Support zum parcolumns-Paket wenig befriedigend, hier stehen noch die meisten zu lösenden Probleme an...

cookie170
22-07-2010, 13:19
Hi Alexander,
. . .
p.s.: Leider ist der Support zum pdfcolumns-Paket wenig befriedigend, hier stehen noch die meisten zu lösenden Probleme an...

Ähm, das Paket kenne ich nicht. Meinst Du parcolumns? Ich ziehe dieses Paket "parallel" vor, weil es Aufzählungen und Auflistungen erlaubt.

Gruß,
Alexander

slowfox
22-07-2010, 13:45
Ich hatte mich vertippt, das sollte nicht pdfcolumns sondern parcolumns heißen. :o

Schweinebacke
22-07-2010, 13:59
Dann lohnt sich vielleicht noch ein Blick auf pdfcolparcolumns (http://ctan.org/pkg/pdfcolparcolumns)

cookie170
22-07-2010, 16:57
Das Paket behebt nur Farb-Fehler von parcolumns. Keine eigenständige Bedeutung.

A.

rais
24-07-2010, 17:44
Moin Marco,


Auch unschön ist derzeit, dass innerhalb der Überschrift ein Seitenwechsel erfolgen kann.

hast Du dafür ein Beispiel?
Evtl tut es ein \\* statt \\ in den \bi*-Definitionen.


Und ein weiteres Problem: habe ich sehr lange Überschriften, d.h. Überschriften, die mehr als eine Zeile in Anspruch nehmen, dann funktioniert die Einrückung nicht mehr. Wie kann ich das Problem lösen? Die ganze Überschrift in eine Minipage packen?

Nö, zieh mal den \begingroup in den \bi*-Definitionen n Tuck nach vorne, etwa


\newcommand{\bisection}[2]{%
\section{%
#1\begingroup\\%
\leadingspacenotintoc{\thesection}%
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}

bzw.


\newcommand{\bisection}[2]{%
\section{%
#1\begingroup\\*%
\leadingspacenotintoc{\thesection}%
\selectlanguage{english}\textit{#2}%
\endgroup
}%
}

MfG

Schweinebacke
24-07-2010, 19:55
Ich habe aus lauter Bastellust auch mal noch etwas herumprobiert und bin zu Folgendem auf Basis von scrbook gekommen (funktioniert ganz ähnlich sicher auch mit scrartcl). Ich dachte, bevor ich es wegwerfe, schreibe ich das mal hier ein, damit es nicht ganz verloren geht ...
\documentclass[headlines=2.5]{scrbook}
\usepackage[english,ngerman]{babel}
\usepackage{blindtext}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{booktabs}
\usepackage{scrpage2}
\usepackage{zref-savepos}

\pagestyle{scrheadings}% Das scheint robuster zu sein, als die headings!

\makeatletter
\newcommand*{\correction}{0pt}
\newcommand*{\zsp}{}
\AtBeginDocument{%
\addtocontents{toc}{%
\protect\renewcommand*{\protect\correction}{\@tocr marg}
\protect\renewcommand*{\protect\zsp}{toc.}
% \protect\let\protect\midrule\relax% Linie im Inhaltsverzeichnis weg
}%
}

\DeclareRobustCommand{\bihead}[3]{%
\zsavepos{\zsp#1}%
\ifthispageodd{}{}%
\begin{tabular}[t]{@{}p{\dimexpr\linewidth-\zposx{\zsp#1}sp+1in+\ifthispagewasodd\oddsidemarg in\else\evensidemargin\fi-\correction\relax}@{}}
#2\tabularnewline
\midrule
\foreignlanguage{english}{#3}\tabularnewline
\end{tabular}
}

\renewcommand*{\chaptermark}[1]{%
\markboth{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\chaptermarkformat #1}}{}%
}
\renewcommand*{\sectionmark}[1]{%
\markright{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\sectionmarkformat #1}}%
}

\makeatother

\begin{document}
\tableofcontents

\chapter{%
\bihead{chapter.\thechapter}
{Überschrift Kapitel~\Roman{chapter}}
{Headline Chapter~\Roman{chapter}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext[6]

\chapter{%
\bihead{chapter.\thechapter}
{Überschrift Kapitel~\Roman{chapter}}
{Headline Chapter~\Roman{chapter}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext[6]

\end{document}Durch die Verwendung von zref braucht es ein paar Durchläufe, bis das Ergebnis stimmt (eben so lange, wie LaTeX meldet, dass sich Labels geändert haben). Wenn aus irgend einem Grund mal ein falscher Umbruch entsteht, muss man aus demselben Grund aux- und toc-Datei löschen und von vorn mit den LaTeX-Durchläufen beginnen. Aber sonst kann man da eine ganze Menge machen. Ein paar Alternativen habe ich schon auskommentiert im Code oben drin.

kFieLd
02-03-2015, 18:56
Der letzte Beitrag ist zwar schon 4,5 Jahre her, hoffe aber, dass ich trotzdem eine Antwort bekomme ;-)

Ich habe die Variante von Schweinebacke umgesetzt. Sie funktioniert prinzipiell.

Wenn ich jedoch zusätzlich \usepackage{hyperref} einbinde, bekomme ich einen Haufen Fehlermeldungen in der Art:

Use of \@chapter doesn't match its definition. }

Zweites Problem: ich hätte gerne die Englische Übersetzung in Kursiv gesetzt. Leider werden \textit{} und \itshape in der entsprechenden Zeile ignoriert.

\foreignlanguage{english}{\itshape #3}\tabularnewline

klops
03-03-2015, 07:45
Computer Modern hat keine fette, kursive Serifenlose. Wenn Du die brauchst, musst Du eine passende Schrift verwenden. Füge beispielsweise
\usepackage[T1]{fontenc}
\usepackage{lmodern}
in die Präambel ein, dann geht auch:
\DeclareRobustCommand{\bihead}[3]{%
\zsavepos{\zsp#1}%
\ifthispageodd{}{}%
\begin{tabular}[t]{@{}p{\dimexpr\linewidth-\zposx{\zsp#1}sp+1in+\ifthispagewasodd\oddsidemarg in\else\evensidemargin\fi-\correction\relax}@{}}
#2\tabularnewline
\midrule
\itshape\foreignlanguage{english}{#3}\tabularnewli ne
\end{tabular}
}

Das löst aber nicht das hyperref-Problem. hyperref schreibt zusätzliche Infos in die aux-Datei und verwendet den Text der Überschrift auch sonst noch ganz unterschiedlich beispielsweise für die Lesezeichen (aka Bookmarks aka Outlines). Bei letzterem zerbricht offenbar etwas, weil da versucht wird, ganze Befehle und Umgebungen als Lesezeichentext zu verwenden. Die einfachste Lösung ist, hyperref zu sagen, dass es bei \bihead die Texte nahezu unformatiert verwenden soll. Das geht mit \texorpdfstring recht einfach:
\documentclass[headlines=2.5]{scrbook}
\usepackage[english,ngerman]{babel}
\usepackage{blindtext}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{booktabs}
\usepackage{scrpage2}
\usepackage{zref-savepos}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\pagestyle{scrheadings}% Das scheint robuster zu sein, als die headings!

\makeatletter
\newcommand*{\correction}{0pt}
\newcommand*{\zsp}{}
\AtBeginDocument{%
\addtocontents{toc}{%
\protect\renewcommand*{\protect\correction}{\@tocr marg}
\protect\renewcommand*{\protect\zsp}{toc.}
% \protect\let\protect\midrule\relax% Linie im Inhaltsverzeichnis weg
}%
}

\DeclareRobustCommand{\bihead}[3]{%
\texorpdfstring{%
\zsavepos{\zsp#1}%
\ifthispageodd{}{}%
\begin{tabular}[t]{@{}p{\dimexpr\linewidth-\zposx{\zsp#1}sp+1in+\ifthispagewasodd\oddsidemarg in\else\evensidemargin\fi-\correction\relax}@{}}
#2\tabularnewline
\midrule
\itshape\foreignlanguage{english}{#3}\tabularnewli ne
\end{tabular}}{#2 (#3)}%
}

\renewcommand*{\chaptermark}[1]{%
\markboth{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\chaptermarkformat #1}}{}%
}
\renewcommand*{\sectionmark}[1]{%
\markright{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\sectionmarkformat #1}}%
}

\makeatother
\usepackage{hyperref}
\begin{document}
\tableofcontents

\chapter{%
\bihead{chapter.\thechapter}
{Überschrift Kapitel~\Roman{chapter}}
{Headline Chapter~\Roman{chapter}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext[6]

\chapter{%
\bihead{chapter.\thechapter}
{Überschrift Kapitel~\Roman{chapter}}
{Headline Chapter~\Roman{chapter}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext[6]

\end{document}
Ich habe alle Änderungen rot markiert.
Näheres zu \texorpdfstring ist der hyperref-Anleitung zu entnehmen.

Es sei darauf hingewiesen, dass das im Beispiel verwendete Paket scrpage2 inzwischen durch scrlayer-scrpage ersetzt wurde. Für neue Dokumente sollte man daher besser scrlayer-scrpage verwenden.

kFieLd
03-03-2015, 10:31
Cool, vielen Dank klops!

Das hat mich schonmal weiter gebracht. Jetzt stört mich noch, dass auch im Inhaltsverzeichnis und im Kolumnentitel (siehe Seite 4 oben im Minimalbeispiel) beide Sprachen stehen. Wie erreiche ich, dass dort nur die deutsche Übersetzung steht?

Mein bisheriger Code:


\documentclass[11pt]{scrreprt}

\usepackage[USenglish,ngerman,main=ngerman]{babel}

\usepackage[
automark,
headsepline,
plainheadsepline,
]{scrlayer-scrpage}

\pagestyle{scrheadings}

\ohead[\pagemark]{\pagemark}
\ihead[]{\headmark}
\ofoot[]{}


\usepackage{blindtext}

\usepackage{hyperref}

\RequirePackage{lmodern}% http://ctan.org/pkg/lm

\RequirePackage[scaled]{helvet}
\renewcommand{\familydefault}{\sfdefault}

\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Zweisprachige Überschriften
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{zref-savepos}
\usepackage{booktabs}

\makeatletter
\newcommand*{\correction}{0pt}
\newcommand*{\zsp}{}
\AtBeginDocument{%
\addtocontents{toc}{%
\protect\renewcommand*{\protect\correction}{\@tocr marg}
\protect\renewcommand*{\protect\zsp}{toc.}
% \protect\let\protect\midrule\relax% Linie im Inhaltsverzeichnis weg
}%
}

\DeclareRobustCommand{\bihead}[3]{%
\texorpdfstring{%
\zsavepos{\zsp#1}%
\ifthispageodd{}{}%
\begin{tabular}[t]{@{}p{\dimexpr\linewidth-\zposx{\zsp#1}sp+1in+\ifthispagewasodd\oddsidemarg in\else\evensidemargin\fi-\correction\relax}@{}}
#2\tabularnewline
% \midrule
\itshape\normalsize\mdseries\foreignlanguage{USeng lish}{#3}\tabularnewline
\end{tabular}}{#2}
}

\renewcommand*{\chaptermark}[1]{%
\markboth{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\chaptermarkformat #1}}{}%
}
\renewcommand*{\sectionmark}[1]{%
\markright{\mbox{%
\noexpand\renewcommand*{\noexpand\zsp}{head.}%
% \noexpand\let\noexpand\midrule\relax% Linie im Kopf weg
\sectionmarkformat #1}}%
}

\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{document}
\selectlanguage{ngerman}

\tableofcontents

\chapter{%
\bihead{chapter.\thechapter}
{Überschrift Kapitel~\Roman{chapter}}
{Headline Chapter~\Roman{chapter}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext

\section{%
\bihead{section.\thesection}
{Überschrift Abschnitt~\Roman{section}}
{Headline Section~\Roman{section}}
}

\blindtext[8]

\end{document}




Vielleicht kann man das Ganze dadurch ja noch einfacher gestalten, dass ich tatsächlich die englischen Überschriften nur im Text benötige und nirgends sonst (nicht im Inhaltsverzeichnis, nicht im Kolumnentitel, nicht im PDF)?

klops
03-03-2015, 17:18
Bei häppchenweise mit den Anforderungen herausrücken fühle ich mich ehrlich gesagt verarscht. Lass die Umdefinierung von \chaptermark und \sectionmark weg und verwende das optionale Argument von \chapter und \section für das, was Du in Kopf und Inhaltsverzeichnis haben willst. Das hyperref-Problem gibt es dann auch gar nicht erst und ich hätte mir die Mühe sparen können!

kFieLd
04-03-2015, 09:37
klops, tut mir leid. Dass mit dem Inhaltsverzeichnis war mir vorher einfach nicht aufgefallen. Außerdem bin ich ja nicht der Threadersteller, sondern habe mich ja quasi nur drangehängt.

Danke jedenfalls für die Hinweise!

Der \texorpdfstring-Befehl muss allerdings anscheinend drinnen bleiben, sonst bekomme ich
TeX capacity exceeded, sorry [parameter stack size=10000]. }

klops
05-03-2015, 07:18
Mit den geänderten Anforderungen sieht das nach http://www.komascript.de/node/1894 aus.

kFieLd
05-03-2015, 19:35
Stimmt, klops. Danke für den Link!