PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zweisprachige Bildunter-/Tabellenüberschriften



slowfox
20-05-2010, 12:11
In einigen deutschen wissenschaftlichen Journalen findet man zusätzlich zum deutschen Abstrakt auch ein englisches Abstract sowie zweischprachige Tabellenüber- und Bildunterschriften in der Form:

|||||||||||||||||||||||||||||
Abbildung 1. Deutscher Titel
Figure 1. Englischer Titel


sowie

Tabelle 1. Deutscher Titel
Table 1. Englischer Titel
|||||||||||||||||||||||||||||


Dies würde ich gerne für eine Veröffentlichung ebenso praktizieren. Kann man soetwas beispielsweise mit dem caption-Paket realisieren? Vielen Dank schon mal im voraus.

cookie170
20-05-2010, 16:07
Hallo,

ich habe so etwas ähnliches mit KOMA-Script-Bordmitteln, nämlich der Umgebung captionbeside, gesetzt.
Ich habe dazu die Bennenung verkürzt, so dass sie für beide Sprachen zutraf (z.B. Tab. 1).
Ich habe die Beschriftungen untereinander gesetzt und jeweils noch einen Kommentar angefügt


Der Phantasie sind dabei wenige Grenzen gesetzt. Beispielsweise könntest Du den einen Text aufrecht und den anderen kursiv setzen, oder ähnliches.

Gruß,
Alexander

sommerfee
20-05-2010, 20:25
Ansonsten bietet das ccaption-Paket (mit doppel-c) eine Möglichkeit hierfür.

slowfox
21-05-2010, 11:14
@cookie170: Danke, aber captionbeside kommt für mich leider nicht in Frage, die Beschriftungen sollen über bzw. unter den Tabellen bzw. Abbildungen stehen.

@sommerfee: Danke für den Hinweis auf ccaption. Ich habe damit jetzt etwas herumprobiert, aber leider ist es noch nicht so elegant wie ich mir das wünschen würde.

Der Befehl \bicaption erfordert jedesmal die zusätzliche Eingabe des Names der jeweiligen Umgebung. Dies würde ich gerne automatisieren, und habe entsprechend zwei eigene Befehel angelegt: \figbicaption und \tabbicaption. Ich ahbe zwei Befehle angelegt, da ich nicht weiß, wie man automatisch die Art der Umgebung abfragen kann. In den eigenen Befehlen würde ich jetzt gerne über \selectlanguage{"zweite Sprache"}\figurename bzw. \selectlanguage{"zweite Sprache"}\tablename die voreingestellten Bezeichnungen verwenden. Leider bekomme ich dann eine Fehlermeldung, dass \bicaption zu viele Parameter hätte. Schade. Hier mein lauffähiges Beispiel:


\documentclass[english,ngerman]{scrartcl}

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

\usepackage{babel}

\usepackage{ccaption}
\usepackage{caption}

\newcommand{\figbicaption}[3]{%
\bicaption[#1]{}{#2}{Figure}{#3}% {\selectlanguage{english}\figurename}
}

\newcommand{\tabbicaption}[3]{%
\bicaption[#1]{}{#2}{Table}{#3}% {\selectlanguage{english}\tablename}
}

\begin{document}

\begin{figure}
\figbicaption{fig:test}{Deutscher Titel}{English Title}
\end{figure}

\begin{table}
\tabbicaption{tab:test}{Deutscher Titel}{English Title}
\end{table}

\end{document}

Kann mein Wunsch nach Automatisierung erfüllt werden?

Eine weitere Frage: soweit ich das Manual zu ccaption verstanden habe, sieht das Paket nicht vor, das ich die Captions der zwei Sprachen unterschiedlich formatiere, d.h. bspw. die erste normal und die zweite kursiv. Kann ich das irgendwie doch machen.


p.s.:
@ sommerfee: Hast du schon mal über eine Ergänzung zweisprachiger Über-/Unterschriften für das caption und das subcaption-Paket nachgedacht?

sommerfee
21-05-2010, 18:59
Der Name der Gleitumgebung steht in \@captype.

Warum es mit \captionsenglish\@nameuse{\@captype name} nicht funktioniert, weiß ich aus dem Stegreif auch nicht, ich werde mir das am Wochenende mal anschauen.



@ sommerfee: Hast du schon mal über eine Ergänzung zweisprachiger Über-/Unterschriften für das caption und das subcaption-Paket nachgedacht?

Über einen passenden Eintrag in meiner TODO.txt bin ich diesbezüglich leider noch nicht hinausgekommen...

sommerfee
23-05-2010, 10:12
Warum es mit \captionsenglish\@nameuse{\@captype name} nicht funktioniert, weiß ich aus dem Stegreif auch nicht, ich werde mir das am Wochenende mal anschauen.

Woran es liegt, weiß ich zwar immer noch nicht, da ich aber keine Lust hatte, in den Quellen von ccaption herumzuwühlen, habe ich das Problem über ein Hilfsmakro gelöst:



\documentclass[english,ngerman]{scrartcl}

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

\usepackage{ccaption}

\makeatletter
\newcommand{\mybicaption}[3]{%
\begingroup
\captionsenglish
\edef\@tempa{\endgroup
\def\noexpand\@tempa{\@nameuse{\@captype name}}}
\@tempa
\bicaption[{#1}]{}{#2}{\@tempa}{#3}%
}
\makeatother

\begin{document}

\begin{figure}
\mybicaption{fig:test}{Deutscher Titel}{English Title}
\end{figure}

\begin{table}
\mybicaption{tab:test}{Deutscher Titel}{English Title}
\end{table}

\end{document}


Liebe Grüße,
Axel

sommerfee
23-05-2010, 10:23
...und hier eine passende Lösung unter Zuhilfenahme des caption-Paketes:



\documentclass[english,ngerman]{scrartcl}

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

\usepackage{caption}

\newcommand{\mybicaption}[3]{%
\caption{#2\label{#1}}%
\begingroup
\ContinuedFloat
\captionsenglish
\captionsetup{font=it,labelfont=it}%
\captionsetup{belowskip=\abovecaptionskip,aboveski p=0pt}%
\caption[]{#3}%
\endgroup}

\begin{document}

\listoffigures

\begin{figure}
\centering Test
\mybicaption{fig:test}{Deutscher Titel}{English Title}
\end{figure}

\begin{table}
\mybicaption{tab:test}{Deutscher Titel}{English Title}
\centering Test
\end{table}

\end{document}


Beide Lösungen (also sowohl die mit ccaption als auch die mit caption) haben leider den Nachteil, daß die englische Beschriftung mit deutschen Trennmustern getrennt wird. Ich lasse mir diesbezüglich was einfallen und melde mich dann wieder... (Kann aber ein wenig dauern)

slowfox
23-05-2010, 15:44
Herzlichen Dank ersteinmal. Eine ähnliche Lösung mit dem Caption-Paket hatte ich mir inzwischen allerdings auch überlegt, aber ohne die captionsetup-Einstellungen; und auch die Befehle begin/endgroup waren mir bislang unbekannt. Ich habe babel genutzt, um die Sprache umzustellen, wodurch auch das Trennmuster geändert wird. Hier eine Kombination dieser Idee mit deinem Vorschlag:


\documentclass[english,ngerman]{scrartcl}

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

\usepackage{caption}

\newcommand{\mynewbicaption}[3]{%
\caption{#2\label{#1}}%
\begingroup
\ContinuedFloat
\selectlanguage{english}
\captionsetup{font=it,labelfont=it}%
\captionsetup{aboveskip=0pt}%
\caption[]{#3}%
\endgroup}


\begin{document}

\listoffigures

\begin{figure}
\centering Test
\mynewbicaption{fig:test}{Deutscher Titel}{English Title}
\end{figure}

\begin{table}
\mynewbicaption{tab:test}{Deutscher Titel}{English Title}
\centering Test
\end{table}

\end{document}

slowfox
12-07-2010, 12:18
Zweisprachige Abbildungsbeschriftungen klappen prima. Nun nutze ich aber auch das Paket Subcaption für Unterabbildungen, und auch die Unter-Überschriften sollen möglichst zweisprachig sein. Ich habe mir da Folgendes ausgedacht:


\documentclass[english,ngerman]{scrartcl}

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

\usepackage[compatibility=false]{caption}
\usepackage{subcaption}

\newcommand{\mynewbicaption}[3]{%
\caption{#2\label{#1}}%
\begingroup
\ContinuedFloat
\selectlanguage{english}
\captionsetup{font=it,labelfont=it}%
\captionsetup{aboveskip=0pt}%
\caption[]{#3}%
\endgroup}

\newcommand{\mynewbisubcaption}[3]{%
#1\\ %
\textit{(\subref{#3}) #2}%
\label{#3}}

\begin{document}

\begin{figure}
\centering
\subcaptionbox{\mynewbisubcaption{Teilabbildung A}{Subfigure A}{fig:test:A}}[0.5\textwidth]{BILD}%
\subcaptionbox{\mynewbisubcaption{Teilabbildung B}{Subfigure B}{fig:test:B}}[0.5\textwidth]{BILD}%
\mynewbicaption{fig:test}{Deutscher Titel}{English Title}
\end{figure}

\end{document}

Bringt gruindsätzlich das gewünschte Ergebnis, erscheint mir aber nicht sonderlich elegant. Wie kann ich dass besser machen?

sommerfee
13-07-2010, 09:19
Eine andere (aber auch bessere?) Lösung:


\documentclass[english,ngerman]{scrartcl}

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

\usepackage{caption,subcaption}

\makeatletter
\DeclareCaptionFormat{bi}{%
#1#2#3%
\@ifundefined{bicaptionx}{}{%
\selectlanguage{english}%
\textit{#1#2\bicaptionx}}}
\makeatother
\captionsetup{format=bi,labelfont={}}

\newcommand\bicaption[2]{%
\long\def\bicaptionx{#2}%
\caption{#1}}
\newcommand\bisubcaptionbox[2]{%
\long\def\bicaptionx{#2}%
\subcaptionbox{#1}}

\begin{document}

\begin{figure}
\centering
\bisubcaptionbox{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox{Teilabbildung B\label{fig:test:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption{Deutscher Titel}{English Title}
\label{fig:test}
\end{figure}

\end{document}


Anmerkungen:

- Die Definition eines eigenen Caption-Formates erscheint mir elegant, hat aber den Nachteil, daß man nicht mehr "format=hang" einstellen kann. Möchte man "hängende" captions, so müsste man dies selber in obriges Format namens "bi" einbauen.

- Das "labelfont={}" ist für KOMA-Script notwendig, weil KOMA-Script ansonsten den Zeichensatz des Labels explizit auf \normalfont zurücksetzt. (Siehe auch Doku zum caption-Paket, Abschnitt über KOMA-Script)

- Obrige Lösung funktioniert vermutlich nicht in Verbindung mit dem sidecap- und/oder dem fltpage-Paket. Wenn Bedarf dafür da ist, bitte bescheid geben, dann denke ich mir was aus.

- Bei obriger Lösung fällt zwar das optionale Argument von \caption bzw. \subcaptionbox für den Verzeichniseintrag unter den Tisch, dies ließe sich aber problemlos nachrüsten. Ich habe es erstmal bewußt nicht eingebaut, um den Quelltext verständlich zu halten. Wer es dennoch gerne haben möchte:



\documentclass[english,ngerman]{scrartcl}

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

\usepackage[list=on]{caption,subcaption}

\makeatletter

\DeclareCaptionFormat{bi}{%
#1#2#3%
\@ifundefined{bicaptionx}{}{%
\selectlanguage{english}%
\textit{#1#2\bicaptionx}}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\long\def\bicaptionx{#3}%
\caption#1{#2}}
\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\long\def\bicaptionx{#3}%
\subcaptionbox#1{#2}}

\makeatother

\captionsetup{format=bi,labelfont={}}

\begin{document}

\listoffigures

\begin{figure}
\centering
\bisubcaptionbox[A]{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B\label{fig:test:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungstitel]{Deutscher Titel}{English Title}
\label{fig:test}
\end{figure}

\end{document}


(Äquivalent zu \bicaption und \bicaptionbox ließe sich auch ein \bisubcaption definieren.)

\caption@withoptargs ist hierbei ein Hilfsmakro des caption-Paketes, welches alle optionalen Argumente aufsammelt und an das nächste Makro diese in Form von #1 übergibt. Für nur ein optionales Argument hätte man das zwar auch "zu Fuß" machen können, durch die Verwendung von \caption@withoptargs funktioniert jedoch auch \bicaption*{Test dt}{Test en}, da \caption@withoptargs auch den * aufsammelt. (Mehr zu \caption@withoptargs findet sich in den kommentierten Quellen vom caption-Paket, also caption.pdf.)

Liebe Grüße,
Axel

sommerfee
13-07-2010, 09:48
Und weils gerade so schön ist, noch eine Flexibilisierung obriger Lösung. Man ersetze die Definition des Caption-Formates "bi" durch:



\DeclareCaptionOption{lang}{%
\selectlanguage{#1}}

\DeclareCaptionFormat{bi}{%
#1#2#3%
\@ifundefined{bicaptionx}{}{%
\caption@setoptions{bi}%
\caption@hj\captionfont\captionsize
#1#2\bicaptionx}}


Dann kann man mit \captionsetup[bi]{...} die Sprache und das Aussehen der "zweiten" Beschriftung selber festlegen; um das gleiche Ergebnis wie oben zu erhalten wäre das:



\captionsetup[bi]{lang=english,font=it}


Liebe Grüße,
Axel

sommerfee
13-07-2010, 10:21
Auf die Gefahr hin, daß ich diesen Thread dichtspamme :eek: :D

bicaption.sty:



%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/13 v0.2 Bilingual Captions (AR)]

\@ifundefined{caption@subtypehook}{% we need caption v3.1f or newer
\PackageError{subcaption}{`caption' package not loaded\MessageBreak
(which is needed by this package)\@gobble}{%
If you do not understand this error, please take a closer look\MessageBreak
at the documentation of the `bicaption' package.\MessageBreak
\@ehc}%
\endinput}{}

\DeclareCaptionOption{biformat}{%
\def\bicaption@format{#1}}

\newcommand\bicaption@fmt{%
\@nameuse{caption@fmt@\bicaption@format}}

\DeclareCaptionOption{lang}{%
\selectlanguage{#1}}

\caption@ExecuteOptions{caption}{biformat=plain}

\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[bi]{#2}}
\caption@ProcessOptions*{bicaption}
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined

\providecommand\caption@prefmt{%
\caption@hj\captionfont\captionsize}
\providecommand\caption@postfmt{%
}

\DeclareCaptionFormat{@bi}{%
\bicaption@fmt{#1}{#2}{#3}%
\caption@postfmt
\caption@setoptions{bi}%
\caption@prefmt
\bicaption@fmt{#1}{#2}{\bicaption@text}}

\newcommand\bicaption@setup[1]{%
\global\long\def\bicaption@text{#1}%
\captionsetup{format=@bi}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#3}%
\subcaptionbox#1{#2}}

\endinput


Damit würde ein Beispieldokument lauten:
(ACHTUNG: bicaption muß nach dem caption-Paket geladen werden!)



\documentclass[english,ngerman]{scrartcl}

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

\usepackage[labelfont={}]{caption}
\usepackage[list=on]{subcaption}
\usepackage[lang=english,font=it]{bicaption}

\begin{document}

\listoffigures

\begin{figure}
\centering
\bisubcaptionbox[A]{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B\label{fig:test:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Deutscher Titel}{English Title}
\label{fig:test}
\bicaption*{Test dt}{Test en}
\end{figure}

\begin{figure}
\centering
\subcaptionbox[]{}[0.5\textwidth]{BILD}%
\subcaptionbox[]{}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Deutscher Titel}{English Title}
\label{fig:test2}
\end{figure}

\end{document}


Ich denke ich werde in Zukunft dieses bicaption.sty einfach 'mal meinem caption-Paket beilegen, auf die Gefahr hin, daß ich diesen Schnellschuß dann bis ans Ende meines Lebens supporten muß. :o

Liebe Grüße,
Axel

Nachtrag: Mit \captionsetup{biformat=...} kann man nun das Format festlegen, mit dem beide Beschriftungen gesetzt werden. Default ist biformat=plain.

slowfox
13-07-2010, 12:30
Axel, du bist einfach prima! Ich danke Dir.

Beim Rumspielen mit dem bicaption-Paket viel mir auf, dass es durchaus möglich ist, die Subcaptions nummeriert zu haben, während die caption in der Stern-Variante unnummeriert verwendet wird. (Über den Sinn und Unsinn dieser Kombination ließe sich sicherlich streiten.) Bei der nächsten figure beginnt die Nummerierung der Subfigures dann nicht bei a, sondern bei, im Beispiel, c. Ist das ein Problem von bicaption, oder allgemein von subcaption?



\documentclass[english,ngerman]{scrartcl}

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

\usepackage[labelfont={}]{caption}
\usepackage[list=on]{subcaption}
\usepackage[lang=english,font=it]{bicaption}

\begin{document}

\listoffigures

\begin{figure}
\centering
\bisubcaptionbox{Teilabbildung A\label{fig:test2:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox{Teilabbildung B\label{fig:test2:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption*{Deutscher Titel}{English Title}
\label{fig:test2}
\end{figure}


\begin{figure}
\centering
\bisubcaptionbox[A]{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B\label{fig:test:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Deutscher Titel}{English Title}
\label{fig:test}
\end{figure}

\end{document}

sommerfee
13-07-2010, 13:19
Bei der nächsten figure beginnt die Nummerierung der Subfigures dann nicht bei a, sondern bei, im Beispiel, c. Ist das ein Problem von bicaption, oder allgemein von subcaption?

Das ist ein Problem von subcaption, welches auch ohne das bicaption-Paket auftritt. Es läßt sich auch leider nicht trivial lösen, denn egal wie die subcaptions intern implementiert werden, es gibt immer irgendwelche Seiteneffekte, die ich nur minimieren, aber nicht ganz beseitigen kann.

Ganz konkret ist es so, daß das subcaption-Paket die Nummerierung weiterführt, wenn entweder \ContinuedFloat verwendet wird, oder in der vorherigen Abbildung keine \caption gesetzt wird. \caption* (oder \bicaption*) gilt hierbei nicht, denn dies setzt keine "echte" Beschriftung (und erhöht insbesondere nicht den Abbildungszähler, dies ist das Hauptproblem!), sondern nur einen Textabsatz, der so formatiert wird, wie es für die Abbildungsbeschriftungen eingestellt ist. (Ohne Erhöhung des Abbildungszählers ist übrigens auch das \label ungültig bzw. verweist auf die letzte \section anstatt auf diese Abbildung.)

Abhilfe wäre in diesem Falle, nicht \caption* (oder \bicaption*) zu nehmen, sondern stattdessen eine "echte" Beschriftung mit \caption (oder \bicaption) zu setzen. Will man diese optisch nicht nummeriert haben (intern und ggf. im Abbildungsverzeichnis aber sehr wohl nummeriert!), so muß man eben ein \captionsetup{labelformat=empty} vorwegsetzen, etwa so:


\captionsetup{labelformat=empty}
\bicaption{Deutscher Titel}{English Title}
\label{fig:test2}


Alternativ könnte man auch mit \captionlistentry{Titel für's Abbildungsverzeichnis} einen Eintrag ins Abbildungsverzeichnis vornehmen und den Zähler erhöhen, also


\bicaption*{Deutscher Titel}{English Title}
\captionlistentry{Deutscher Titel}
\label{fig:test2}


Oder mit \refstepcounter{figure} selber den Abbildungszähler erhöhen.


\bicaption*{Deutscher Titel}{English Title}
\refstepcounter{figure}
\label{fig:test2}


Will man aber gar nicht, daß diese Abbildung intern eine Nummer bekommt, dann könnte man nach der Abbildung mit \setcounter{subfigure}{0} den Zähler für die Unterabbildungen zurücksetzen, die würden dann bei der nächsten Abbildung wieder bei (a) anfangen.

Alles nicht ganz einfach zu durchschauen, es ist aber nunmal (leider) so, daß der Abbildungszähler bei \caption und nicht bei \begin{figure} erhöht wird, und mit der Erhöhung des Zählers auch die interne Referenzbildung vorgenommen wird, so daß \label greifen kann.

Liebe Grüße,
Axel

lockstep
13-07-2010, 13:22
Beim Rumspielen mit dem bicaption-Paket viel mir auf, dass es durchaus möglich ist, die Subcaptions nummeriert zu haben, während die caption in der Stern-Variante unnummeriert verwendet wird. (Über den Sinn und Unsinn dieser Kombination ließe sich sicherlich streiten.) Bei der nächsten figure beginnt die Nummerierung der Subfigures dann nicht bei a, sondern bei, im Beispiel, c. Ist das ein Problem von bicaption, oder allgemein von subcaption?

Das ist ein Problem - oder besser: ein Feature - von LaTeX. Wenn ein Zähler an einen anderen Zähler gekoppelt ist (z.B. subsection an section), wird der untergeordnete Zähler auf 0 zurückgesetzt, sobald der übergeordnete Zähler hochgesetzt wird. Bei caption* wird kein Zähler hochgesetzt, also wird auch kein Subzähler zurückgesetzt. (Unabhängig davon halte ich bei unnummerierten Abbildungen nummerierte Unterabbildungen für nicht sinnvoll.)

lockstep

slowfox
13-07-2010, 13:53
(Unabhängig davon halte ich bei unnummerierten Abbildungen nummerierte Unterabbildungen für nicht sinnvoll.)

@lockstep: Da stimme ich dir ja zu. Ich hatte beim Rumprobieren einfach die bicaption nur in der Stern-Variante verwendet, hatte aber vergessen die \bisubcaptions ebenfalls anzupassen, da viel mir das Propblem auf.

@sommerfee: Und nun zu weiteren Problemen mit dem neuen Package:

Es gibt einen Konflikt zwischen bicaption.sty und Microtype mit der Option "babel". Für die Zeile der ersten subcaptionbox-Anweisung erhalte ich die Fehlermeldung: "! Package caption Error: font undefined."

Ich ging bislang davon aus, dass das caption-Paket die Beschriftungen solange zentriert setzt, solange die Beschriftung in eine Zeile passt. Ist die Beschriftung länger, wird sie linksbündig gesetzt. Mit subcaption/bicaption verhält es sich anders: längere, aber einzeilige Beschriftungen werden linksbündig gesetzt.


\documentclass[english,ngerman]{scrartcl}

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

\usepackage[labelfont={}]{caption}
\usepackage[list=on]{subcaption}
\usepackage[lang=english,font=it]{bicaption}

\usepackage[babel]{microtype}

\begin{document}

\listoffigures

\begin{figure}
\centering
\bisubcaptionbox[A]{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung langer Titel B\label{fig:test:B}}{Subfigure long title B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Deutscher Titel}{English Title}
\label{fig:test}
\end{figure}

\end{document}

sommerfee
13-07-2010, 14:30
Für die Zeile der ersten subcaptionbox-Anwesung erhalte ich die Fehlermeldung: "! Package caption Error: font undefined."

Probiere mal diese Version, damit geht es dann zumindest bei mir wieder:


%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/13 v0.3 Bilingual Captions (AR)]

\RequirePackage{caption}[2009/10/09]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% Sachen, die ich noch in caption3.sty einpflegen muß %%%

\providecommand*\caption@SetupOptions{%
\caption@withoptargs\caption@Setup@Options}
\@onlypreamble\caption@SetupOptions
\providecommand*\caption@Setup@Options[3]{%
\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[#3]{##2}}%
\caption@ProcessOptions#1{#2}%
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined}
\@onlypreamble\caption@Setup@Options

\providecommand*\caption@prefmt{%
\caption@hj\captionfont\captionsize}
\providecommand*\caption@postfmt{%
}

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

\DeclareCaptionOption{biformat}{%
\def\bicaption@format{#1}}

\newcommand\bicaption@fmt{%
\@nameuse{caption@fmt@\bicaption@format}}

\DeclareCaptionOption{lang}{%
\def\caption@lang{#1}}
\let\KV@caption@language\KV@caption@lang

\g@addto@macro\caption@prefmt{%
\@ifundefined{caption@lang}{}{%
\expandafter\selectlanguage\expandafter{\caption@l ang}}}

\caption@ExecuteOptions{caption}{biformat=plain}
\caption@SetupOptions*{bicaption}{bi}

\DeclareCaptionFormat{@bi}{%
\bicaption@fmt{#1}{#2}{#3}%
\caption@postfmt
\caption@setoptions{bi}%
\caption@prefmt
\bicaption@fmt{#1}{#2}{\bicaption@text}}

\newcommand\bicaption@setup[1]{%
\global\long\def\bicaption@text{#1}%
\captionsetup{format=@bi}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#3}%
\subcaptionbox#1{#2}}

\endinput


Hier habe ich das Setzen der Sprache mittels \selectlanguage an einen günstigeren Zeitpunkt verschoben. Ein netter Nebeneffekt ist, daß man bei dieser Version mit


\captionsetup{lang=...}

die Sprache von nicht-bilingualen bzw. der ersten Beschriftung von bilingualen Beschriftungen setzen kann.

Liebe Grüße,
Axel

P.S.: Weiß eigentlich jemand, ob es auch tri-linguale Beschriftungen gibt, also ein \tricaption Sinn ergeben würde? (Wie machen das die Schweizer?)

slowfox
13-07-2010, 14:59
Das microtype Problem ist damit gelöst. Danke!

Magst du dir auch noch das zweite Problem ansehen?

Hey Axel, wirklich herzlichen Dank für Deine Arbeit, ohne Euch Paketschreiber wären reine Schreiberlinge mit Spezialwünschen wie ich echt aufgeschmissen!

Zu deiner Frage bzgl. trilingualem Textsatz kann ich Dir leider keine Antwort beisteuern.

sommerfee
13-07-2010, 15:17
Ich ging bislang davon aus, dass das caption-Paket die Beschriftungen solange zentriert setzt, solange die Beschriftung in eine Zeile passt. Ist die Beschriftung länger, wird sie linksbündig gesetzt. Mit subcaption/bicaption verhält es sich anders: längere, aber einzeilige Beschriftungen werden linksbündig gesetzt.

Daran habe ich überhaupt nicht gedacht. Der "singlelinecheck" ist mit dieser Implementation im Eimer, denn es wird lediglich die Beschriftung der ersten Sprache für diesen Test hinzugezogen, und die daraus resultierende Entscheidung gilt dann für beide Sprachen.

Als Konsequenz müsste man das alles ganz anders implementieren (d.h. insbesondere nicht über die Definition eines eigenen Caption-Formates), so daß der "singlelinecheck" für jede Beschriftung einzeln greift. Ich werde mal in den Tiefen des caption-Paketes wühlen, wie das besser ginge; das kann aber ein paar Tage dauern und geht ggf. auch nur mit einer Änderung am caption-Paket selber...

Ich melde mich wieder, sobald ich eine andere/bessere Lösung anbieten kann.

Liebe Grüße,
Axel

sommerfee
13-07-2010, 15:40
Ging doch einfacher, als ich gedacht hatte:



%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/13 v0.4 Bilingual Captions (AR)]

\RequirePackage{caption}[2009/10/09]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% Sachen, die ich noch in caption3.sty einpflegen muß %%%

\providecommand*\caption@SetupOptions{%
\caption@withoptargs\caption@Setup@Options}
\@onlypreamble\caption@SetupOptions
\providecommand*\caption@Setup@Options[3]{%
\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[#3]{##2}}%
\caption@ProcessOptions#1{#2}%
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined}
\@onlypreamble\caption@Setup@Options

\providecommand*\caption@prefmt{%
\caption@hj\captionfont\captionsize}
\providecommand*\caption@postfmt{%
}

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

\DeclareCaptionOption{lang}{%
\def\caption@lang{#1}}
\let\KV@caption@language\KV@caption@lang

\g@addto@macro\caption@prefmt{%
\@ifundefined{caption@lang}{}{%
\expandafter\selectlanguage\expandafter{\caption@l ang}}}

\caption@SetupOptions*{bicaption}{bi}

\let\bicaption@@make\caption@@make
\renewcommand\caption@@make[2]{%
\bicaption@@make{#1}{#2}%
\@ifundefined{bicaption@text}{}{%
\caption@setoptions{bi}%
\bicaption@@make{#1}{\bicaption@text}%
\global\let\bicaption@text\@undefined}}

\newcommand\bicaption@setup[1]{%
\global\long\def\bicaption@text{#1}%
\caption@setoptions{@bi}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#3}%
\subcaptionbox#1{#2}}

\endinput


Jetzt habe ich noch eine Frage: Ich würde es gerne so einbauen, daß man sowohl zusätzliche Optionen für beide Sprachen (die also nur bei Anwendung von \bi...caption zur Anwendung kommen), als auch Optionen für die zweite Sprache setzen kann.

Beides ist zwar schon drin, allerdings gefallen mir die Namen nicht besonders. Im Moment geht das über



\captionsetup[@bi]{...Optionen für \bi..caption.., also für beide Sprachen...}
\captionsetup[bi]{...Optionen für die 2te Sprache...}


Hast du eine Idee, was ich besseres als "@bi" und "bi" nehmen könnte?

Liebe Grüße,
Axel

slowfox
13-07-2010, 16:30
Super, jetzt klappts. Damit verabschiedet sich mein selbstgebastelter Code in den virtuellen Mülleimer. Danke!

Ob's besser ist, weiß ich nicht, aber wie wäre es einfach mit "bi" für beide und "secondlanguage" für die zweite Sprache?

Ciao, Marco

sommerfee
13-07-2010, 17:12
Ob's besser ist, weiß ich nicht, aber wie wäre es einfach mit "bi" für beide und "secondlanguage" für die zweite Sprache?

Ich finde es besser, nur "secondlanguage" ist mir persönlich zu lang. Wie wäre es mit "second" stattdessen, oder besser "bi-second", damit klar ist, daß es sich um eine Einstellung für Bi-Captions handelt?

Und wenn man schon ein "bi-second" hat, könnte man auch ein "bi-first" erfinden, womit man bei Bedarf Einstellungen für nur die erste Bi-Caption tätigen kann?

Liebe Grüße,
Axel

slowfox
13-07-2010, 17:20
"bi-second" ist gut.

Ist "bi-first" denn notwendig? Werden die Einstellungen der ersten Caption nicht von den allgemeinen Einstellungen des Caption-Paketes beeinflusst? Bi-Captions und Mono-Captions sollten trotz aller Einstellmöglichkeiten doch am Ende noch irgendwie verwand aussehen.

sommerfee
13-07-2010, 17:51
Ist "bi-first" denn notwendig?

IMHO nein, ich hätte es nur der Vollständigkeit halber eingebaut.


Werden die Einstellungen der ersten Caption nicht von den allgemeinen Einstellungen des Caption-Paketes beeinflusst?

Doch, es wären lediglich zusätzliche Einstellungen, die per default auf nix stehen.

Hier mal die passende Version (wo auch wieder die Sprachumschaltung funktioniert, die war nämlich bei der v0.4 hopps gegangen, weil eine Änderung am Code des caption-Paketes fehlte):



%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/13 v0.5 Bilingual Captions (AR)]

\RequirePackage{caption}[2009/10/09]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% Sachen, die ich noch in caption3.sty einpflegen muß %%%

\providecommand*\caption@SetupOptions{%
\caption@withoptargs\caption@Setup@Options}
\@onlypreamble\caption@SetupOptions
\providecommand*\caption@Setup@Options[3]{%
\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[#3]{##2}}%
\caption@ProcessOptions#1{#2}%
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined}
\@onlypreamble\caption@Setup@Options

\providecommand*\caption@prefmt{%
\caption@hj\captionfont\captionsize}
\providecommand*\caption@postfmt{%
}

\renewcommand\caption@@@make[2]{%
\sbox\@tempboxa{#1}%
\ifdim\wd\@tempboxa=\z@
\let\caption@lsep\relax
% \@capbreakfalse
\fi
\caption@ifempty{#2}{%
\let\caption@lsep\relax
% \@capbreakfalse
% \let\caption@ifstrut\@secondoftwo
}%
\@setpar{\@@par\caption@@par}\caption@@par
\caption@prefmt\caption@fmt
{\ifcaption@star\else{\captionlabelfont#1}\fi}%
{\ifcaption@star\else{\caption@iflf\captionlabelfo nt\caption@lsep}\fi}%
{{\captiontextfont
\caption@ifstrut{\vrule\@height\ht\strutbox\@width \z@}{}%
\nobreak\hskip\z@skip % enable hyphenation
\caption@tfmt{#2}%
% \caption@ifstrut{\vrule\@height\z@\@depth\dp\strut box\@width\z@}{}%
\caption@ifstrut{\ifhmode\@finalstrut\strutbox\fi} {}%
\par}}%
\caption@postfmt}

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

\DeclareCaptionOption{lang}{%
\def\caption@lang{#1}}
\let\KV@caption@language\KV@caption@lang

\g@addto@macro\caption@prefmt{%
\@ifundefined{caption@lang}{}{%
\expandafter\selectlanguage\expandafter{\caption@l ang}}}

\caption@SetupOptions*{bicaption}{bi-second}

\let\bicaption@@make\caption@@make
\renewcommand\caption@@make[2]{%
\@ifundefined{bicaption@text}%
{\bicaption@@make{#1}{#2}}%
{\caption@setoptions{bi}%
\begingroup
\caption@setoptions{bi-first}%
\bicaption@@make{#1}{#2}%
\endgroup
\begingroup
\caption@setoptions{bi-second}%
\bicaption@@make{#1}{\bicaption@text}%
\endgroup
\global\let\bicaption@text\@undefined}}

\newcommand\bicaption@setup[1]{%
\global\long\def\bicaption@text{#1}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#3}%
\subcaptionbox#1{#2}}

\endinput


Wenn du da diese Woche nichts mehr an Problemen findest, packe ich die am Wochenende nach CTAN.

Liebe Grüße,
Axel

slowfox
13-07-2010, 18:53
Die vorherige Version vetrug sich mit meiner recht umfangreichen Preambel problemlos. Die neue Version werde ich gleich mal austesten.

Ciao, Marco

slowfox
14-07-2010, 09:52
Moin Axel,

kein Fehler, aber eventuell ein Schönheitsmakel: es geht wieder um den singlelinecheck. Dieser wird aktuell für jede der beiden zusammengehörigen Captions separat durchgeführt. Das führt dazu, dass bspw. die deutsche Caption linksbündig gesetzt wird, während die englische noch zentriert gesetzt wird. Ich empfinde es optisch ansprechender, wenn beide zusammengehörigen Captions gleich gesetzt werden. Kann man das eventuell als Option implementieren?



\documentclass[english,ngerman]{scrartcl}

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

\usepackage[labelfont={}]{caption}
\usepackage[list=on]{subcaption}
\usepackage[lang=english,font=it]{bicaption}

\begin{document}

\listoffigures

\begin{figure}
\centering
\bisubcaptionbox[A]{Und eine gaaaanz lange Caption: Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B\label{fig:test:B}}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Und eine noch viel viel viel viel längere deutsche Beschriftung: Deutscher Titel}{In Englisch ist alles kürzer: English Title}
\label{fig:test}
\end{figure}

\end{document}

sommerfee
14-07-2010, 10:19
Ich empfinde es optisch ansprechender, wenn beide zusammengehörigen Captions gleich gesetzt werden. Kann man das eventuell als Option implementieren?

Das kann man z.B. mit


\captionsetup[bi]{singlelinecheck=off}

regeln.

Eine Paketoption diesbezüglich wäre schwer zu realisieren, weil z.Z. einfach alle Optionen an \captionsetup[bi-second]{...} weitergereicht werden.

Eine automatisierte Lösung, die quasi die längere der beiden Beschriftungen als Referenz für beide nimmt, wäre nett. Ich werde mal schauen, ob ich das irgendwie hinbekomme.

Liebe Grüße,
Axel

sommerfee
14-07-2010, 14:32
Neues Spiel, neues Glück:



%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/14 v0.6 Bilingual Captions (AR)]

\RequirePackage{caption}[2009/10/09] % needs v3.1k or newer

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% Sachen, die ich noch in caption3.sty einpflegen muß %%%

\newcommand*\caption@SetupOptions{%
\caption@withoptargs\caption@Setup@Options}
\@onlypreamble\caption@SetupOptions
\newcommand*\caption@Setup@Options[3]{%
\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[#3]{##2}}%
\caption@ProcessOptions#1{#2}%
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined}
\@onlypreamble\caption@Setup@Options

\newcommand*\caption@applyfont{%
\caption@hj\captionfont\captionsize}

\renewcommand\caption@@@make[2]{%
\sbox\@tempboxa{#1}%
\ifdim\wd\@tempboxa=\z@
\let\caption@lsep\relax
% \@capbreakfalse
\fi
\caption@ifempty{#2}{%
\let\caption@lsep\relax
% \@capbreakfalse
% \let\caption@ifstrut\@secondoftwo
}%
\@setpar{\@@par\caption@@par}\caption@@par
\caption@applyfont
\caption@fmt
{\ifcaption@star\else{\captionlabelfont#1}\fi}%
{\ifcaption@star\else{\caption@iflf\captionlabelfo nt\caption@lsep}\fi}%
{{\captiontextfont
\caption@ifstrut{\vrule\@height\ht\strutbox\@width \z@}{}%
\nobreak\hskip\z@skip % enable hyphenation
\caption@tfmt{#2}%
% \caption@ifstrut{\vrule\@height\z@\@depth\dp\strut box\@width\z@}{}%
\caption@ifstrut{\ifhmode\@finalstrut\strutbox\fi} {}%
\par}}}

\newcommand\caption@@slc[5]{%
\caption@Debug{Begin SLC}%
\begingroup
\caption@singleline
\let\caption@hj\@empty
\caption@calcmargin % calculate #3 if necessary
\caption@prepareslc
\sbox\@tempboxa{\caption@@@make{#1}{#2}}%
\ifdim\wd\@tempboxa>#3%
\endgroup
#5%
\else
\endgroup
#4%
\fi
\caption@Debug{End SLC}}

\renewcommand\caption@slc[4]{%
\caption@@slc{#1}{#2}{#3}{\caption@singleline#4}{} }

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

\DeclareCaptionOption{bi-singlelinecheck}[1]{\caption@set@bool\bicaption@ifslc{#1}}
\DeclareCaptionOption{bi-slc}[1]{\caption@set@bool\bicaption@ifslc{#1}}

\DeclareCaptionOption{lang}{%
\def\caption@lang{#1}}
\let\KV@caption@language\KV@caption@lang

\g@addto@macro\caption@applyfont{%
\@ifundefined{caption@lang}{}{%
\expandafter\selectlanguage\expandafter{\caption@l ang}}}

\caption@ExecuteOptions{caption}{bi-slc=1}
\caption@SetupOptions*{bicaption}{bi-second}

\let\caption@@make@ORI\caption@@make
\renewcommand\caption@@make[2]{%
\@ifundefined{bicaption@text}%
{\caption@@make@ORI{#1}{#2}}%
{\bicaption@@make{#1}{#2}{\bicaption@text}%
\global\let\bicaption@text\@undefined}}
\newcommand\bicaption@@make[3]{%
\caption@setoptions{bi}%
\bicaption@ifslc
{\caption@@slc{#1}{#2}{\captionwidth}{}{\caption@s et@bool\caption@ifslc0}%
\caption@@slc{#1}{#3}{\captionwidth}{}{\caption@se t@bool\caption@ifslc0}}%
{}%
\begingroup
\caption@setoptions{bi-first}%
\caption@@make@ORI{#1}{#2}%
\endgroup
\begingroup
\caption@setoptions{bi-second}%
\caption@@make@ORI{#1}{#3}%
\endgroup}

\newcommand\bicaption@setup[1]{%
\global\long\def\bicaption@text{#1}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#3}%
\subcaptionbox#1{#2}}

\endinput


Passendes Beispieldokument:



\errorcontextlines=9
\documentclass[english,ngerman]{article}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage[format=hang,labelfont={}]{caption}
\usepackage[list=on]{subcaption}
\usepackage[lang=english,font=it]{bicaption}
%\captionsetup[bi]{slc=0}

\usepackage[babel]{microtype}

\begin{document}

\listoffigures

\begin{figure}[!htb]
\centering
\bisubcaptionbox{Teilabbildung A\label{fig:test:A}}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox{Teilabbildung langer Titel B\label{fig:test:B}}{Subfigure long title B}[0.5\textwidth]{BILD}%
\bicaption{Deutscher Titel}{English Title}
\label{fig:test}
\end{figure}

\captionsetup{bi-slc=0}

\begin{figure}[!htb]
\centering
\bisubcaptionbox[A]{Und eine gaaaanz lange Caption: Teilabbildung A}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Und eine noch viel viel viel viel längere deutsche Beschriftung: Deutscher Titel}{In Englisch ist alles kürzer}
\end{figure}

\captionsetup{bi-slc=1}

\begin{figure}[!htb]
\centering
\bisubcaptionbox[A]{Und eine gaaaanz lange Caption: Teilabbildung A}{Subfigure A}[0.5\textwidth]{BILD}%
\bisubcaptionbox[B]{Teilabbildung B}{Subfigure B}[0.5\textwidth]{BILD}%
\bicaption[Abbildungsverzeichnistitel]{Und eine noch viel viel viel viel längere deutsche Beschriftung: Deutscher Titel}{In Englisch ist alles kürzer}
\end{figure}

\end{document}


(Default ist "bi-slc=1" bzw. "bi-singlelinecheck=1")

Liebe Grüße,
Axel

slowfox
14-07-2010, 16:08
Für mich sehen die beiden Anweisungen

\captionsetup[bi]{slc=0}
\captionsetup{bi-slc=0}

ersteinmal so aus, als dass sie das gleiche Ergebnis erzeugen würden. Dem ist aber nicht so. im ersten Fall werden alle Captions linksbündig gesetzt, im zweiten nur die jeweilige (Teil-)Überschrift, die zu lang ist. Ist das so beabsichtigt? Es ist auf jeden Fall etwas verwirrend.

Ansonsten liefert die Standardeinstellung mit bi-slc=1 genau das Ergebnis, das ich mir gewünscht habe. Danke!

sommerfee
14-07-2010, 16:21
Für mich sehen die beiden Anweisungen

\captionsetup[bi]{slc=0}
\captionsetup{bi-slc=0}

ersteinmal so aus, als dass sie das gleiche Ergebnis erzeugen würden. Dem ist aber nicht so. im ersten Fall werden alle Captions linksbündig gesetzt, im zweiten nur die jeweilige (Teil-)Überschrift, die zu lang ist. Ist das so beabsichtigt?

Ja, "slc" ist ja der bekannte "singlelinecheck" ("slc=off" und "singlelinecheck=off" ist die gleiche Option), und wenn man den für alle Bi-Captions ausschaltet, dann sind die (Bi-)Captions logischerweise anschließend alle linksbündig.

"bi-slc" bzw. "bi-singlelinecheck" ist jedoch eine neue Option, die bewirkt, daß sich der Singlelinecheck bei Bi-Captions nach der längsten Sprache richtet.


Es ist auf jeden Fall etwas verwirrend.

Das mag daran liegen, daß der Name der Option "bi-slc" verwirrend ist. Mir ist aber kein besserer Name eingefallen, hast du eine Idee?

(Vielleicht sollte ich gar keine neue Option erfinden, sondern "slc=bi" erlauben? Wäre aber nicht so einfach zu implementieren...)


Ansonsten liefert die Standardeinstellung mit bi-slc=1 genau das Ergebnis, das ich mir gewünscht habe.

Das hört sich doch gut an, prima!

Liebe Grüße,
Axel

slowfox
18-07-2010, 10:41
Moin Axel,

mir ist da noch eine Spielerei eingefallen:

Ist es möglich, das Paket bicaption mit einer weiteren globalen Option zu versehen, so dass es mit einer Einstellung lang=1 nur die erste Sprache und mit lang=2 nur die zweite Sprache wie eine gewöhnliche Caption ausgibt (also sämtliche Sondereinstellungen für bi ignoriert), falls der Anwender für einen bestimmten Zweck doch nur einsprachige Captions haben will, aber den Latex-Code nicht überarbeiten möchte? Ich nehme an, dies zu implementieren ist aufwändig, es ist außerdem nur Spielkram. Ein Problem habe ich schon selbst identifiziert: derzeit spezifizieren wir das Label in der ersten Bicaption. Wird dieser Eintrag nicht verwendet, so ist die Caption ohne Label.

Ciao, Marco

sommerfee
20-07-2010, 09:39
Gute Idee! Ich werde daran basteln und bescheid geben, sobald ich was neues habe.


Ein Problem habe ich schon selbst identifiziert: derzeit spezifizieren wir das Label in der ersten Bicaption. Wird dieser Eintrag nicht verwendet, so ist die Caption ohne Label.

Bei \bicaption und \bisubcaption kann man das \label auch nach dem Befehl (also insbesondere außerhalb des Befehls) schreiben, dann hat man das Problem nicht mehr.

Bei \bisubcaptionbox geht das leider nicht, da müsste man eine Variante definieren, wo das Label ein eigener Parameter ist. Da \bisubcaptionbox jedoch auf \subcaptionbox zurückgreift, geht das aber nicht so einfach. Ich werde mal schauen, ob mir hierzu was schlaues (oder was dummes :D ) einfällt...

Liebe Grüße,
Axel

sommerfee
20-07-2010, 16:58
Bescheid!

\captionsetup{bi-lang=first} (oder \captionsetup{bi-lang=1} oder \captionsetup{bi-lang=1st}) schaltet nur die erste Sprache ein, \captionsetup{bi-lang=second} (oder 2 oder 2nd) nur die zweite.

Wenn man nur die zweite Sprache aktiviert hat, wird aus dem Text der ersten ggf. das \label extrahiert und angewandt.



%%
%% This is file `bicaption.sty',
%%
%% Copyright (C) 2010 Axel Sommerfeldt (caption@sommerfee.de)
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Axel Sommerfeldt.
%%
%% This work consists of the file bicaption.sty.
%%

\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{bicaption}[2010/07/20 v0.7 Bilingual Captions (AR)]
\RequirePackage{caption}[2009/10/09] % needs v3.1k or newer

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% Sachen, die ich noch in caption3.sty einpflegen muss %%%

\newcommand*\caption@SetupOptions{%
\caption@withoptargs\caption@Setup@Options}
\@onlypreamble\caption@SetupOptions
\newcommand*\caption@Setup@Options[3]{%
\let\caption@setkeys@ORI\caption@setkeys
\renewcommand\caption@setkeys[2]{\captionsetup[#3]{##2}}%
\caption@ProcessOptions#1{#2}%
\let\caption@setkeys\caption@setkeys@ORI
\let\caption@setkeys@ORI\@undefined}
\@onlypreamble\caption@Setup@Options

\newcommand*\caption@applyfont{%
\caption@hj\captionfont\captionsize}

\renewcommand\caption@@@make[2]{%
\sbox\@tempboxa{#1}%
\ifdim\wd\@tempboxa=\z@
\let\caption@lsep\relax
% \@capbreakfalse
\fi
\caption@ifempty{#2}{%
\let\caption@lsep\relax
% \@capbreakfalse
% \let\caption@ifstrut\@secondoftwo
}%
\@setpar{\@@par\caption@@par}\caption@@par
\caption@applyfont
\caption@fmt
{\ifcaption@star\else{\captionlabelfont#1}\fi}%
{\ifcaption@star\else{\caption@iflf\captionlabelfo nt\caption@lsep}\fi}%
{{\captiontextfont
\caption@ifstrut{\vrule\@height\ht\strutbox\@width \z@}{}%
\nobreak\hskip\z@skip % enable hyphenation
\caption@tfmt{#2}%
% \caption@ifstrut{\vrule\@height\z@\@depth\dp\strut box\@width\z@}{}%
\caption@ifstrut{\ifhmode\@finalstrut\strutbox\fi} {}%
\par}}}

\newcommand\caption@@slc[5]{%
\caption@Debug{Begin SLC}%
\begingroup
\caption@singleline
\let\caption@hj\@empty
\caption@calcmargin % calculate #3 if necessary
\caption@prepareslc
\sbox\@tempboxa{\caption@@@make{#1}{#2}}%
\ifdim\wd\@tempboxa>#3%
\endgroup
#5%
\else
\endgroup
#4%
\fi
\caption@Debug{End SLC}}

\renewcommand\caption@slc[4]{%
\caption@@slc{#1}{#2}{#3}{\caption@singleline#4}{} }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
%%% ab hier nun der eigentliche Code von bicaption.sty %%%

\newcommand*\bicaption@Error[1]{%
\PackageError{bicaption}{#1}\bicaption@eh}
%\let\bicaption@KV@err\bicaption@Error
\newcommand*\bicaption@eh{%
If you do not understand this error, please take a closer look\MessageBreak
at the documentation of the `bicaption' package.\MessageBreak\@ehc}

\newcount\bicaption@lang
\DeclareCaptionOption{bi-lang}{%
\caption@ifinlist{#1}{0,all,both}{%
\bicaption@lang=0\relax
}{\caption@ifinlist{#1}{1,1st,first}{%
\bicaption@lang=1\relax
}{\caption@ifinlist{#1}{2,2nd,second}{%
\bicaption@lang=2\relax
}{%
\bicaption@Error{Undefined bi-lang value `#1'}%
}}}}

\DeclareCaptionOption{bi-singlelinecheck}[1]{\caption@set@bool\bicaption@ifslc{#1}}
\DeclareCaptionOption{bi-slc}[1]{\caption@set@bool\bicaption@ifslc{#1}}

\DeclareCaptionOption{lang}{\def\caption@lang{#1}}
\let\KV@caption@language\KV@caption@lang

\g@addto@macro\caption@applyfont{%
\@ifundefined{caption@lang}{}{%
\expandafter\selectlanguage\expandafter{\caption@l ang}}}

\caption@ExecuteOptions{caption}{bi-lang=0,bi-slc=1}
\caption@SetupOptions*{bicaption}{bi-second}

\let\caption@@make@ORI\caption@@make
\renewcommand\caption@@make[2]{%
\@ifundefined{bicaption@text}%
{\caption@@make@ORI{#1}{#2}}%
{\bicaption@@make{#1}{#2}{\bicaption@text}%
\global\let\bicaption@label\@undefined
\global\let\bicaption@text\@undefined}}
\newcommand\bicaption@@make[3]{%
\caption@setoptions{bi}%
\ifnum\bicaption@lang=0\relax
\bicaption@ifslc
{\caption@@slc{#1}{#2}{\captionwidth}{}{\caption@s et@bool\caption@ifslc0}%
\caption@@slc{#1}{#3}{\captionwidth}{}{\caption@se t@bool\caption@ifslc0}}%
{}%
\fi
\ifnum\bicaption@lang=2\relax
\ifx\bicaption@label\@empty\else
\expandafter\label\expandafter{\bicaption@label}%
\fi
\else
\begingroup
\caption@setoptions{bi-first}%
\caption@@make@ORI{#1}{#2}%
\endgroup
\fi
\ifnum\bicaption@lang=1\relax
\else
\begingroup
\caption@setoptions{bi-second}%
\caption@@make@ORI{#1}{#3}%
\endgroup
\fi}

\newcommand\bicaption@setup[2]{%
\bicaption@getlabel#1\label{}\@nil
\global\long\def\bicaption@text{\ignorespaces#2}}
\long\def\bicaption@getlabel#1\label#2#3\@nil{%
\global\def\bicaption@label{#2}}

\newcommand\bicaption{%
\caption@withoptargs\@bicaption}
\newcommand\@bicaption[3]{%
\bicaption@setup{#2}{#3}%
\caption#1{#2}}

\newcommand\bisubcaption{%
\caption@withoptargs\@bisubcaption}
\newcommand\@bisubcaption[3]{%
\bicaption@setup{#2}{#3}%
\subcaption#1{#2}}

\newcommand\bisubcaptionbox{%
\caption@withoptargs\@bisubcaptionbox}
\newcommand\@bisubcaptionbox[3]{%
\bicaption@setup{#2}{#3}%
\subcaptionbox#1{#2}}

\endinput


Liebe Grüße,
Axel

slowfox
20-07-2010, 21:21
Joa, das sieht gut aus. Ich danke Dir!

Aber wieso funktioniert das nur, wenn ich


\captionsetup{bi-lang=2}

verwende, und nicht wenn ich es als Paketoption übergebe?


\usepackage[lang=english,bi-lang=2]{bicaption}


Mal sehen, ob mir noch weitere Ideen einfallen...

Ciao, Marco

sommerfee
21-07-2010, 07:42
Aber wieso funktioniert das nur, wenn ich


\captionsetup{bi-lang=2}

verwende, und nicht wenn ich es als Paketoption übergebe?


\usepackage[lang=english,bi-lang=2]{bicaption}



\usepackage[...]{bicaption}

ist zur Zeit identisch mit


\usepackage{bicaption}
\captionsetup[bi-second]{...}


Vielleicht sollte ich es so ändern, daß es identisch mit


\usepackage{bicaption}
\captionsetup[bi]{...}

ist?

Aber egal, wie ich es ändere,

\usepackage[lang=english,bi-lang=2]{bicaption}
wird niemals funktionieren, weil "lang=english" ja nur für die zweite Beschriftung gelten soll, die Option "bi-lang" aber logischerweise vor dem Setzen der beiden Beschriftungen ausgewertet werden muß. Eine dieser beiden Optionen muß also immer "manuell" per \captionsetup gesetzt werden.

Theoretisch könnte ich es aber so lösen, daß ich die "bi-xxx"-Optionen bei den Paketoptionen herausfiltere, und diese dann intern mit \captionsetup[b]{...} und alle anderen mit \captionsetup[bi-second]{...} setze, ich schaue mir die Tage mal an, wie einfach oder besch...eiden das gehen würde...

Liebe Grüße,
Axel

sommerfee
22-07-2010, 08:46
Theoretisch könnte ich es aber so lösen, daß ich die "bi-xxx"-Optionen bei den Paketoptionen herausfiltere, und diese dann intern mit \captionsetup[b]{...} und alle anderen mit \captionsetup[bi-second]{...} setze, ich schaue mir die Tage mal an, wie einfach oder besch...eiden das gehen würde...

Sehr bescheiden, denn ich müsste hierfür anfangen, Code des keyval-Paketes zu patchen. (Was mir außerdem auch den in Zukunft geplanten Umstieg auf das kvoptions-Paket erschweren würde.)

Daher würde ich das gerne erstmal so lassen, wie es ist. Irgendein Verbesserungspotential muß ja auch noch für zukünftige Versionen übrig bleiben. ;)

Liebe Grüße,
Axel

slowfox
22-07-2010, 10:11
Mit der aktuellen Version kann ich sehr gut Leben. Ich danke dir Axel!

Ciao, Marco

sommerfee
22-07-2010, 15:36
Danke auch dir Marco für's Mitarbeiten und Testen, hat Spaß gemacht!

Wenn es so ok ist, sehe ich zu, daß ich das ganze in den nächsten Tagen "in Stein meißele", sprich ein ordentliches Paket mit kleiner Dokumentation daraus mache und das ganze nach CTAN kippe. Ich sage dann noch'mal bescheid, wenn es auf CTAN verfügbar ist.

Liebe Grüße,
Axel

sommerfee
05-09-2010, 13:46
Aktueller Stand:

Das mit "in den nächsten Tagen" war wohl zu optimistisch gedacht, aber dieses Wochenende habe ich mir endlich Zeit dafür genommen. Herausgekommen ist dabei u.a. diese Anleitung:

... (Edit: Link entfernt, da daß bicaption-Paket mittlerweile auf CTAN liegt.)

(Feedback erwünscht!)

Am bicaption-Paket selber hat sich von Version 0.7 nach 0.8 nichts wesentliches geändert, es lädt jetzt allerdings automatisch das caption-Paket.

In den nächsten Tagen werde ich noch die Bugfixes der letzten 8 Monate ins caption-Paket einarbeiten und dokumentieren, dann endlich landet der Kram auf CTAN.

Liebe Grüße,
Axel

mechanicus
05-09-2010, 13:58
Hi,

beim lesen der Doku stellt sich mir die Frage, wie kann ich es explizit auf Tabellen anwenden:

\captionsetup[bi-second]{\font=it}

Gruß
Marco

sommerfee
05-09-2010, 14:04
beim lesen der Doku stellt sich mir die Frage, wie kann ich es explizit auf Tabellen anwenden:

Du meinst, du möchtest den Zeichensatz der zweiten Sprache auf Italic, aber nur bei Tabellen (und nicht bei Abbildungen)?

Das geht z.Z. nur über einen Trick:


\DeclareCaptionOption{bi-second-font}{\captionsetup[bi-second]{font=#1}}
\captionsetup[table]{bi-second-font=it}


(Ich habe es nicht ausprobiert, sollte aber gehen.)

Liebe Grüße,
Axel

mechanicus
05-09-2010, 14:06
Du meinst, du möchtest den Zeichensatz der zweiten Sprache auf Italic, aber nur bei Tabellen (und nicht bei Abbildungen)?
Genau :D



Das geht z.Z. nur über einen Trick:

Danke.

Gruß
Marco

slowfox
05-09-2010, 19:11
Moin Axel,

die Doku sieht ganz gut aus, aber ich bin vielleicht nicht der beste Testleser, nutze ich doch das Paket schon seit es von dir entwickelt wurde und einige Einsteigerprobleme zeigen sich für mich nicht. Ich nehme an, nach Veröffentlichung wird es noch einige Änderungs- und Ergänzungswünsche an dich geben.

Eine Kleinigkeit: auf Seite zwei 2 ist mir ein Layout-Fehler aufgefallen, Test rutscht in den rechten Rand.)

Nochmals Danke, dass du dir die Mühe mit diesem Paket gemacht hast (und alle meine Wünsche erfüllt hast).

Ciao, Marco

slowfox
17-09-2010, 08:07
Moin Axel,

ich habe da noch einen weiteren Wunsch an das bicaption-Paket: Es ergab sich jetzt bei mir der Fall, dass ich für eine Veröffentlichung die Hauptsprache meines Dokumentes und die sekundäre Sprache tauschen musste. Dies zwang mich dazu, alle \bicaption{dtsch}{engl}-Befehle umzustellen auf \bicaption{engl}{dtsch}. Kannst Du eine zusätzliche Option in das Paket einbauen, bspw. mit dem Namen "swap", die die Reihenfolge der beiden Eingaben vertausch, d.h. dass man trotz der eingabe \bicaption{dtsch}{engl} die Ausgabe "Fig.: engl [linebreak] Abb.: dtsch" erhält? Dies würde einigen Änderungsaufwand vermeiden. Anbei zwei Beispiele, wie ich mir das vorstelle.

Alles prima:


\documentclass[english,ngerman]{article}

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

\usepackage{caption}
\usepackage[lang=english,font=it]{bicaption}

\begin{document}

\begin{figure}
\centering
\textbf{\languagename}
\bicaption{Deutscher Titel}{English Title}
\end{figure}

\end{document}

Ausgabe:
Abbildung 1: Deutscher Titel
Figure 1: English Titel

im AbbVZ: Abbildung 1: Deutscher Titel


Mit vertauschter Hauptsprache und der erhofften zusätzlichen Option:


\documentclass[ngerman,english]{article}

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

\usepackage{caption}
\usepackage[swap,lang=ngerman,font=it]{bicaption}

\begin{document}

\begin{figure}
\centering
\textbf{\languagename}
\bicaption{Deutscher Titel}{English Title}
\end{figure}

\end{document}

(Farblich markiert sind die Änderungen gegenüber dem obigen Beispiel und die gewünschte neue Option.)

gewünschte Ausgabe:
Figure 1: English Titel
Abbildung 1: Deutscher Titel

Im AbbVZ: Figure 1: English Titel

Schweinebacke
17-09-2010, 08:31
Wieso großer Aufwand?
\newcommand{\originalbicaption}{}
\let\originalbicaption\bicaption
\renewcommand{\bicaption}[2]{\originalbicaption{#2}{#1}}

slowfox
17-09-2010, 10:02
Wieso großer Aufwand?

Grundsätzlich eine Interessante Lösung, doch erlaubt sie nicht den optionalen Parameter von \bicaption zu nutzen. Natürlich kann ich mir den wieder ranbasteln, siehe beigefügtes Minimalbeispiel, aber ein Problem bleibt: Möchte ich eine einzelne Abbildung nicht im AbbildungsVZ erscheinen lassen, kann ich beim Original einfach einen leeren optionalen Parameter übergeben, dass geht mit diesem Workaround nicht (siehe Fig. 3). Wie kann man meinen Code entsprechend umbauen?


\documentclass[ngerman,english]{article}

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

\usepackage{caption}
\usepackage[lang=ngerman,font=it]{bicaption}
\usepackage{ifthen}

%%% Vertauschen der Einträge von Bicaption, wenn die Hauptsprache
%%% in der Ausgabe gegenüber der Eingabe getauscht wird.
\providecommand{\originalbicaption}{}
\let\originalbicaption\bicaption
\renewcommand{\bicaption}[3][\empty]{%
\ifthenelse{\equal{#1}{\empty}}{%
\originalbicaption{#3}{#2}%
}{%
\originalbicaption[#1]{#3}{#2}%
}%
}

\begin{document}

\listoffigures

\begin{figure}
\centering\textbf{\languagename}
\bicaption{Deutscher Titel}{English Title}
\end{figure}

\begin{figure}
\centering\textbf{\languagename}
\bicaption[Im FigVZ was anders]{Deutscher Titel}{English Title}
\end{figure}

\begin{figure}
\centering\textbf{\languagename}
\bicaption[]{Deutscher Titel}{English Title} % Fehler!
\end{figure}

\end{document}


p.s.: Das "Anderungsaufwand" in meinem Eingangspost zu diesem Sonderwunsch bezog sich darauf, im Text manuell alles \bicaption{dtsch}{engl} auf \bicaption{engl}{dtsch} umzustellen.

voss
17-09-2010, 10:17
Grundsätzlich eine Interessante Lösung, doch erlaubt sie nicht den optionalen Parameter von \bicaption zu nutzen. Natürlich kann ich mir den wieder ranbasteln, siehe beigefügtes Minimalbeispiel, aber ein Problem bleibt: Möchte ich eine einzelne Abbildung nicht im AbbildungsVZ erscheinen lassen, kann ich beim Original einfach einen leeren optionalen Parameter übergeben, dass geht mit diesem Workaround nicht (siehe Fig. 3). Wie kann man meinen Code entsprechend umbauen?
p.s.: Das "Anderungsaufwand" in meinem Eingangspost zu diesem Sonderwunsch bezog sich darauf, im Text manuell alles \bicaption{dtsch}{engl} auf \bicaption{engl}{dtsch} umzustellen.

Meinst du das hier?


\documentclass[ngerman,english]{article}

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

\usepackage{caption}
\usepackage[lang=ngerman,font=it]{bicaption}

%%% Vertauschen der Einträge von Bicaption, wenn die Hauptsprache
%%% in der Ausgabe gegenüber der Eingabe getauscht wird.
\let\originalbicaption\bicaption
\makeatletter
\def\bicaption{\@ifnextchar[{\bicaption@i}{\bicaption@ii}}
\def\bicaption@i[#1]#2#3{%
\ifx\relax#1\relax\originalbicaption*{#3}{#2}%
\else\originalbicaption[#1]{#3}{#2}\fi}
\def\bicaption@ii#1#2{\originalbicaption{#2}{#1}}
\makeatother

\begin{document}

\listoffigures

\begin{figure}
\centering\textbf{\languagename}
\bicaption{Deutscher Titel}{English Title}
\end{figure}

\begin{figure}
\centering\textbf{\languagename}
\bicaption[Im FigVZ was anders]{Deutscher Titel}{English Title}
\end{figure}

\begin{figure}
\centering\textbf{\languagename}
\bicaption[]{Deutscher Titel}{English Title} % Fehler!
\end{figure}

\end{document}

Herbert

slowfox
17-09-2010, 11:36
Naja, nicht ganz. Jetzt erscheint der Eintrag für Fig. 3 zwar nicht mehr im FigVZ, aber leider wird in der Abbildungsbeschriftung auch das "Figure 3:" entfernt, was mit dem ursprünglichen Befehl ausgegeben wurde.

voss
17-09-2010, 12:00
Naja, nicht ganz. Jetzt erscheint der Eintrag für Fig. 3 zwar nicht mehr im FigVZ, aber leider wird in der Abbildungsbeschriftung auch das "Figure 3:" entfernt, was mit dem ursprünglichen Befehl ausgegeben wurde.

ich hatte den Code zwischenzeitlich geändert. Hattest du diese letzte
Variante probiert?

HErbert

slowfox
17-09-2010, 12:22
Dein obiger Quelltext entfernt bei mir die Beschriftung "Figure 3." und in der zweiten Beschriftungszeile wird fälschlicherweise "Abbildung 2" statt "Abbildung 3" ausgegeben, siehe beigefügtes PDF.

Schweinebacke
17-09-2010, 12:44
Mit dem optionalen Argument hast Du ja ohnehin ein Problem, wenn sich die Hauptsprache ändert, oder nicht?

voss
17-09-2010, 15:22
Dein obiger Quelltext entfernt bei mir die Beschriftung "Figure 3." und in der zweiten Beschriftungszeile wird fälschlicherweise "Abbildung 2" statt "Abbildung 3" ausgegeben, siehe beigefügtes PDF.


\makeatletter
\def\bicaption{\@ifnextchar[{\bicaption@i}{\bicaption@ii}}
\def\bicaption@i[#1]#2#3{%
\ifx\relax#1\relax\originalbicaption[]{#3}{#2}%
\else\originalbicaption[#1]{#3}{#2}\fi}
\def\bicaption@ii#1#2{\originalbicaption{#2}{#1}}
\makeatother


sollte das Problem beheben.

Herbert

sommerfee
18-09-2010, 08:21
Das ganze wäre einfach zu implementieren, indem ich intern einfach die beiden Argumente vertausche (quasi wie die Lösung von Schweinebacke), aber ich sehe da zwei Probleme:

1. Das optionale Argument stimmt ggf. nicht mehr, wenn sich die Hauptsprache ändert. (siehe auch Hinweis von Schweinebacke)

2. Das \label muß ja bei \bisubcaptionbox im ersten Argument stehen, und kann bei \bicaption bzw. \bisubcaption im ersten Argument stehen. Wenn ich aber die Argumente vertausche, wird das \label nicht mehr gefunden, wenn nur die zweite (also ehemals erste) Sprache ausgegeben wird.

Ich werde mir mal dieses Wochenende eine Implementation ausdenken, die zumindest das zweite Problem löst.

Für die Lösung des ersten Problems müsste ich die Syntax auf \bicaption[...]{...}[...]{...} erweitern, so daß man für jede Sprache ein optionales Argument angeben kann, aber das spare ich mir wohl für eine zukünftige Version auf.

Liebe Grüße,
Axel

sommerfee
18-09-2010, 08:24
\makeatletter
\def\bicaption{\@ifnextchar[{\bicaption@i}{\bicaption@ii}}
\def\bicaption@i[#1]#2#3{%
\ifx\relax#1\relax\originalbicaption[]{#3}{#2}%
\else\originalbicaption[#1]{#3}{#2}\fi}
\def\bicaption@ii#1#2{\originalbicaption{#2}{#1}}
\makeatother


sollte das Problem beheben.

Damit funktioniert dann \bicaption[...]{...}{...}, aber nicht die Stern-Variante \bicaption*.

Daher schlage ich folgendes vor:


\makeatletter
\let\originalbicaption\bicaption
\renewcommand\bicaption{\caption@withoptargs\bicap tion@i}
\newcommand\bicaption@i[3]{\originalbicaption#1{#3}{#2}}
\makeatother

(ungetestet, sollte aber funktionieren)

Erläuterung: \caption@withoptargs sammelt den * und sämtliche optionale Argumente auf und übergibt diese als #1 an das nachfolgende Makro, in diesem Falle \bicaption@i.

Liebe Grüße,
Axel

sommerfee
19-09-2010, 20:59
Ich werde mir mal dieses Wochenende eine Implementation ausdenken, die zumindest das zweite Problem löst.

Das hab' ich nun getan, das Ergebnis ist als bicaption.sty v0.9 hier zu finden:

http://www.ctan.org/tex-archive/macros/latex/contrib/caption/

Die primäre und sekundäre Sprache läßt sich hier per \captionsetup{bi-swap} umschalten.

Achtung: Das beiliegende caption-Paket ist ein Zwischenstand, der meine Testsuite nicht durchlaufen hat. Zu Risiken und Nebenwirkungen fragen Sie Ihren Arzt oder Apotheker.

Edit: Link zum bicaption-Paket angepasst, da nun offizieller Bestandteil des caption-Paketes.

voss
19-09-2010, 21:13
Achtung: Das beiliegende caption-Paket ist ein Zwischenstand, der meine Testsuite nicht durchlaufen hat. Zu Risiken und Nebenwirkungen fragen Sie Ihren Arzt oder Apotheker.

habe ich, aber der wusste nicht, wovon ich rede ... :D

Herbert

CyrusField
18-10-2010, 10:07
das Ergebnis ist als bicaption.sty v0.9 hier zu finden

Sorry erstmal, dass ich gleich mit meinem ersten Posting den "alten" Thread ausgrabe...


Großes Lob! Damit klappt das Einbinder der zweisprachigen Bildunterschriften super. Aber: Sie werden leider nicht ins Abbildungsverzeichnis eingebunden.

Ich brauche für ein Dokument auch im Abbildungs- und Tabellenverzeichnis die Form:

Abbildung 1.1 blabla deutsch.......1
Figure 1.1 blabla englisch.......1

Bei Verwendung von bicaption steht dort bisher (bei mir) nur

1.1 blabla deutsch........1
1.2 blabla deutsch 2......1
etc...

Ich habe leider zu wenig Ahnung, um mir da selbst etwas basteln zu können. Der totale Workaround wäre natürlich, die Verzeichnisse von Hand als longtable zu setzen...


Grüße
Cyrus

sommerfee
18-10-2010, 20:41
Ich brauche für ein Dokument auch im Abbildungs- und Tabellenverzeichnis die Form:

Abbildung 1.1 blabla deutsch.......1
Figure 1.1 blabla englisch.......1

Ich werde versuchen, mir am Wochenende was auszudenken, wie man auch die zweite Sprache ins Inhaltsverzeichnis bekommt. (Kann aber auch erst übernächstes Wochenende was werden, sorry.)

Um das "Abbildung" und "Figure" im Abbildungsverzeichnis würde ich mich sehr gerne (weiterhin) drücken, denn das Eingreifen in die Formatierung der Verzeichnisse ist nicht ohne, da jede Dokumentenklasse da seinen eigenen Kram mitbringt. Wenn das (bi)caption-Paket da auch noch herumpatchen würde, würde es vermutlich mehr kaputt als heile machen.

Entweder verwendet man also die Einstellmöglichkeiten der Dokumentenklasse, und wenn nicht vorhanden, ein Paket, was sich um die Formatierung einfach selber kümmert, wie z.B. tocloft.

Liebe Grüße,
Axel

CyrusField
23-10-2010, 23:02
Ich werde versuchen, mir am Wochenende was auszudenken, wie man auch die zweite Sprache ins Inhaltsverzeichnis bekommt. (Kann aber auch erst übernächstes Wochenende was werden, sorry.)

Hat absolut keine Eile - aber schonmal vielen Dank, dass Du Dir die Mühe machst!


Um das "Abbildung" und "Figure" im Abbildungsverzeichnis würde ich mich sehr gerne (weiterhin) drücken, denn das Eingreifen in die Formatierung der Verzeichnisse ist nicht ohne, da jede Dokumentenklasse da seinen eigenen Kram mitbringt. Wenn das (bi)caption-Paket da auch noch herumpatchen würde, würde es vermutlich mehr kaputt als heile machen.

Das muss mMn auch gar nicht sein. Dass es sich bei Einträgen im Abbildungsverzeichnis um Abbildungen und im Tabellenverzeichnis um Tabellen handelt, sollte eigentlich jedem klar sein :D Ich werde meinen chef dahingehend dann auch noch überzeugen *g*
Es wäre also völlig ausreichend, "nur" die zweisprachigen Einträge mit Nummerierung in den Verzeichnissen zu haben.

Eins ist mir aber auch noch aufgefallen - bei Verwendung von bicaption sind die Einträge im Abbildungs-/Tabellenverzeichnis alle nach rechts eingerückt. Sofern ich die weiter oben im Thread beschriebene "Selbstbastellösung" mit der \mybicaption-Umgebung benutze, stimmt's...
Wenn gewünscht, kann ich hier gerne versuchen, ein Minimalbeispiel zusammenzustellen, ich komme aber erst morgen bzw. Montag an den Code ran.

Grüße
Cyrus

sommerfee
24-10-2010, 12:15
Eins ist mir aber auch noch aufgefallen - bei Verwendung von bicaption sind die Einträge im Abbildungs-/Tabellenverzeichnis alle nach rechts eingerückt. Sofern ich die weiter oben im Thread beschriebene "Selbstbastellösung" mit der \mybicaption-Umgebung benutze, stimmt's...
Wenn gewünscht, kann ich hier gerne versuchen, ein Minimalbeispiel zusammenzustellen

Das wäre nett.

Liebe Grüße,
Axel

CyrusField
24-10-2010, 16:35
Einbildung ist auch 'ne Bildung....

Ich hätte schwören können, dass es mit der mynewbicaption-Umgebung anders ausgesehen hat - aber als ich's eben noch mal kompiliert hab, sah's identisch aus... hmmm...

Trotzdem sind die einzelnen Listeneinträge bei mir nach rechts eingerückt.



\documentclass[ngerman,english,a4paper]{scrreprt}

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

\usepackage{caption}[2008/08/24]
\usepackage[lang=english,font=it]{bicaption}

\begin{document}

\addcontentsline{toc}{chapter}{Abbildungsverzeichn is}
\listoffigures

\newpage

\addcontentsline{toc}{chapter}{Tabellenverzeichnis }
\listoftables

\newpage

\chapter{Kapitel 1}\label{Kapitel 1}

blablabla

\begin{figure}[htbp]
\centering
foo
\bicaption{dt. 1}{engl. 1}%
\label{Bild1}
\end{figure}

\begin{table}[htbp]
\centering
\begin{tabular}{||p{5cm}|p{5,6cm}||}
\hline
1 & 2 \\%
\hline
\end{tabular}
\bicaption{dt. tab. 1}{engl. tab. 1}%
\label{Tab1}
\end{table}

\chapter{Kapitel 2}\label{Kapitel 2}
foobar

\begin{figure}[htbp]
\centering
testbild
\bicaption{dt. 2}{engl. 2}%
\label{Bild2}
\end{figure}

\newpage

\end{document}



Das sieht dann aus wie

Abbildungsverzeichnis

1.1 dt. 1 ......1

1.2 engl. 1....2

Wünschenswert wäre

Abbildungsverzeichnis
1.1 dt. 1 ......1
1.2 engl. 1....2

ellocco
24-10-2010, 17:39
Welchen Trick muß ich denn anwenden, bei mir gab es 'ne Fehlermeldung:

bicaption.sty:
--- TeX said ---
<argument> \caption@applyfont

l.60 ...electlanguage\expandafter{\caption@lang}}}

--- HELP ---
TeX encountered an unknown command name. You probably misspelled the
name. If this message occurs when a LaTeX command is being processed,
the command is probably in the wrong place---for example, the error
can be produced by an \item command that's not inside a list-making
environment. The error can also be caused by a missing \documentclass
command.

Anbei das Style-File, das LaTeX-File und das Log-File.

rais
24-10-2010, 18:10
Moin moin,


Trotzdem sind die einzelnen Listeneinträge bei mir nach rechts eingerückt.

ergänze


listof=flat
zu Deinen Klassenoptionen.

MfG

rais
24-10-2010, 18:12
Welchen Trick muß ich denn anwenden, bei mir gab es 'ne Fehlermeldung:

bicaption.sty:
--- TeX said ---
<argument> \caption@applyfont

l.60 ...electlanguage\expandafter{\caption@lang}}}


Du musst auch caption mitkopieren, siehe Axels Beitrag #55.
Aus Deiner .log:


LaTeX Warning: You have requested, on input line 33, version
`2010/09/01' of package caption,
but only version
`2010/01/09 v3.1m Customizing captions (AR)'
is available.

MfG

sommerfee
24-10-2010, 18:56
Das sieht dann aus wie

Abbildungsverzeichnis

1.1 dt. 1 ......1

1.2 engl. 1....2

Wünschenswert wäre

Abbildungsverzeichnis
1.1 dt. 1 ......1
1.2 engl. 1....2

Das ist bei mir nicht reproduzierbar. Wenn ich die Zeilen


\usepackage{caption}[2008/08/24]
\usepackage[lang=english,font=it]{bicaption}

in deinem Beispiel einfach durch


\newcommand\bicaption[1]{\caption}

ersetze, also anschließend weder das caption- noch das bicaption-Paket zum Einsatz kommt, erhalte ich exakt die gleiche Einrückung der Einträge.

Wenn das bei dir wirklich anders ist, packe bitte ein \listfiles an den Anfang des Dokumentes und poste das Resultat. Bei mir ist das (ohne caption+bicaption):


*File List*
scrreprt.cls 2009/07/24 v3.04a KOMA-Script document class (report)
scrkbase.sty 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-dependent ba
sics and keyval usage)
scrbase.sty 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-independent
basics and keyval usage)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
scrlfile.sty 2009/03/25 v3.03 KOMA-Script package (loading files)
tocbasic.sty 2009/06/08 v3.03b KOMA-Script package (handling toc-files)
scrsize11pt.clo 2009/07/24 v3.04a KOMA-Script font size class option (11pt)
typearea.sty 2009/07/24 v3.04a KOMA-Script package (type area)
babel.sty 2008/07/06 v3.8l The Babel package
ngermanb.ldf 2008/07/06 v2.6n new German support from the babel system
english.ldf 2005/03/30 v3.3o English support from the babel system
inputenc.sty 2008/03/30 v1.1d Input encoding file
latin1.def 2008/03/30 v1.1d Input encoding file
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
lmodern.sty 2009/10/30 v1.6 Latin Modern Fonts
t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
t1lmss.fd 2009/10/30 v1.6 Font defs for Latin Modern
ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern
omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern
omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern
***********

(TeXlive 2009)

Liebe Grüße,
Axel

P.S.: Leider dauert es mit der Veröffentlichung auf CTAN noch ein wenig, ich bin dieses Wochenende schon wieder nicht sehr weit gekommen... :-(

CyrusField
22-11-2010, 23:16
Jaja, lange Leitung - sry, war arg AFK...

Das mit den eingerückten Einträgen lag wohl ein einer Bastelei meinerseits, da ich mit Optionen von KOMA, tocstyle und ein paar Seitengrößen-einstellungen rumgespielt habe - sinnigerweise alles gleichzeitig :rolleyes:

Hat sich denn mit den zweisprachigen EInträgen im LOF / LOT was ergeben?


Grüße
Stefan

sommerfee
23-11-2010, 19:03
Hat sich denn mit den zweisprachigen EInträgen im LOF / LOT was ergeben?

Nein, da bin ich leider noch nicht einmal ansatzweise dazu gekommen.

CyrusField
11-07-2011, 13:43
Hi,

da ich leider, leider schon wieder ein zweisprachiges LOT/LOF aufgehalst bekommen habe (nur weil bei einer Uni "Exzellenz" drauf steht, ist halt noch lange keine drin...) - beim letzzen Mal hatte ich es dann doch mit einer longtable gemacht, aber das war nicht schön. Hattest Du Dir die Sache vielleicht noch mal angeschaut?

Immerhin habe ich meinen Chef dazu bringen können, die ganze Sache zumindest ein bisschen zu "vereinfachen":


X.X Bildunterschrift 1...........A
Caption 1

X.Y Bildunterschrift 2...........B
Caption 2

Grüße
Stefan

sommerfee
12-07-2011, 20:49
Hattest Du Dir die Sache vielleicht noch mal angeschaut?

Angeschaut und ein Konzept in Stichpunkten niedergeschrieben. Für die Umsetzung bräuchte ich jedoch einen Tag, also in der Praxis ein ganzes Wochenende (denn es dauert immer länger, als man denkt), und das habe ich zur Zeit leider einfach nicht, oder mir fehlt die rechte Lust dazu, schließlich hänge ich ja schon beruflich 5/8 vor der Kiste. (Ansonsten wäre auch schon längst caption v3.2 draußen, da fehlt schon seit über 1/2 Jahr "nur" noch ein Wochenende.)

Ich habe allerdings eine Idee für eine Q&D, aber flexible Lösung (die besser sein sollte als alles in eine longtable zu hämmern), ich versuche die mal in den nächsten Tagen umzusetzen und melde mich dann.

Liebe Grüße,
Axel

sommerfee
13-07-2011, 08:36
Hier die versprochene Quick & Dirty-Lösung:


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

% bicaption-Paket mit Zweitsprache "english"
\usepackage[lang=english,list=off]{bicaption}

% Hilfsumgebung "figure2", Einträge landen im gleichen Inhaltsverzeichnis wie "figure"
\DeclareCaptionType[fileext=lof]{figure2}

% Optional: Mit Hilfe des Paketes "titletoc" passen wir den
% englischen Eintrag an (keine Nummer, keine Seitenzahl)
\usepackage{titletoc}
\contentsuse{figure2}{lof}
\titlecontents{figure2}[3.8em]
{}
{}
{}
{}

\begin{document}
\listoffigures
\begin{figure}
\centering
A
\bicaption{Deutsch A}{English A}
\captionlistentry[figure2]{English A} % Englischer Eintrag mittels \captionlistentry[figure2]{...}
\end{figure}
\begin{figure}
\centering
B
\bicaption{Deutsch B}{English B}
\captionlistentry[figure2]{English B}
\end{figure}
\end{document}


Als Nachteile dieser Lösung fallen mir spontan nur zwei Dinge ein: 1. Man muß den englischen Eintrag doppelt angeben, einmal bei \bicaption und nochmal bei \captionlistentry. 2. Der englische Listeneintrag wird so "deutsch" gesetzt, es kann also falsche Trennungen ergeben, wenn der Listeneintrag länger als eine Zeile ist. Beides würde man aber auch irgendwie besser hinbekommen, indem man sich ein passendes \mybicaption definiert (oder \bicaption umdefiniert). Wenn Interesse daran besteht, sach' bescheid.

Hilft dir das erstmal weiter?

Nachtrag: Wenn man eine KOMA-Script-Klasse als Dokumentenklasse verwendet, nimmt man wohl besser \DeclareNewTOC statt \DeclareCaptionType und besser "tocstyle" statt "titletoc". Frage mich aber bitte nicht wie genau, "tocstyle" habe ich mir noch überhaupt nicht angesehen.

Nachtrag zu Nachteil Nr.2: Die Listeneinträge werden, wie ich gerade festgestellt habe, sowieso in "irgendeiner" Sprache gesetzt. Da ist also eh' noch eine Baustelle bei mir offen...

CyrusField
15-07-2011, 20:29
Auch wenn's quick & dirty ist - es ist der helle Wahnsinn! :eek:

Dass der engl. Titel zwei mal angegeben werden muss, ist dank copy&paste ja kein Thema, das stört mich jetzt nicht wirklich. Den Text hab ich zusätzlich jetzt noch kursiv gesetzt, dann sieht's schicker aus :rolleyes:

titletoc beißt sich wohl mit dem float-package, wobei ich letzteres nur für ein paar Spielereien drin hatte. Wenn mir das die ganze Tipperei erspart, komme ich auch ohne aus ;)

...ich weiß gar nicht, wie ich Dir danken kann! Einsame klasse, echt!


Vielen, vielen Dank,
Stefan

sommerfee
12-08-2011, 08:31
Das hab' ich nun getan, das Ergebnis ist als bicaption.sty v0.9 hier zu finden:

...

bicaption 0.9 liegt ab sofort (nur noch) (endlich) auf CTAN:

http://www.ctan.org/tex-archive/macros/latex/contrib/caption/

Danke an dieser Stelle an slowfox und CyrusField für Input und Mitarbeit!

In den nächsten Tagen/Wochen werde ich mich daran machen, die zweisprachige Unterstützung der Listeneinträge einzubauen und die Versionsnummer dann auf 1.0 hochziehen. Werde in diesem Thread bescheid geben, wenn es soweit ist.

sommerfee
02-09-2011, 18:57
In den nächsten Tagen/Wochen werde ich mich daran machen, die zweisprachige Unterstützung der Listeneinträge einzubauen und die Versionsnummer dann auf 1.0 hochziehen. Werde in diesem Thread bescheid geben, wenn es soweit ist.

Bescheid! Die Version 1.0 liegt z.Z. zum Testen hier:

... (Edit 2011-11-13: Link entfernt, da nun auf CTAN)

Wenn keiner in den nächsten Tagen was zu mosern findet, lade ich den Kram nach CTAN hoch.

Das Beispieldokument reduziert sich mit dieser Version zu:


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

% bicaption-Paket mit Zweitsprache "english"
\usepackage[lang=english,listtype+=2]{bicaption}

\usepackage{titletoc}

% Hilfsumgebung "figure2", Einträge landen im gleichen Inhaltsverzeichnis wie "figure"
\DeclareCaptionType[fileext=lof]{figure2}

% Mit Hilfe des Paketes "titletoc" passen wir den
% englischen Eintrag an (keine Nummer, keine Seitenzahl)
\titlecontents{figure2}[3.8em]
{}
{}
{}
{}

\begin{document}
\renewcommand\listfigurename{Abbildungsverzeichnis / List of Figures}
\listoffigures

\begin{figure}
\centering
A
\bicaption{Deutsch A}{English A}
\end{figure}

\begin{figure}
\centering
B
\bicaption{Deutsch B}{English B}
\end{figure}

\end{document}

sommerfee
13-10-2011, 19:09
Wenn keiner in den nächsten Tagen was zu mosern findet, lade ich den Kram nach CTAN hoch.

Gesagt, getan, die Version ist auch schon für TeXlive via "tlmgr update caption" bzw. "tlmgr update --all" verfügbar.

Ein Fehler in der Dokumentation wurde auch schon gefunden:

Falsch: \usepackage[english]{bicaption}
Richtig: \usepackage[lang=english]{bicaption}

Wird in der nächsten Version behoben sein, die ist allerdings erst - wenn nicht böse Bugs dazwischenkommen - für Dezember geplant, weil ich vorher kaum Zeit für das (bi)caption-Paket finden werde.