You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
9.3 KiB
273 lines
9.3 KiB
%%
|
|
%% This is file `bicaption.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% bicaption.dtx (with options: `package')
|
|
%%
|
|
%% Copyright (C) 1994-2020 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
|
|
%%
|
|
%% https://gitlab.com/axelsommerfeldt/caption
|
|
%%
|
|
%% --------------------------------------------------------------------------
|
|
%%
|
|
%% 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 files
|
|
%% caption.ins, caption.dtx, caption2.dtx, caption3.dtx,
|
|
%% bicaption.dtx, ltcaption.dtx, subcaption.dtx, totalcount.dtx,
|
|
%% the derived files
|
|
%% caption.sty, caption2.sty, caption3.sty,
|
|
%% bicaption.sty, ltcaption.sty, subcaption.sty, totalcount.sty,
|
|
%% and the user manuals
|
|
%% caption-deu.tex, caption-eng.tex, caption-rus.tex.
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
|
|
\ProvidesPackage{bicaption}[2016/03/27 v1.2 Bilingual Captions (AR)]
|
|
\RequirePackage{caption}[2018/05/11] % needs v3.4 or newer
|
|
\caption@AtBeginDocument{\caption@ifcompatibility{%
|
|
\caption@Error{%
|
|
The `bicaption' package does not work correctly\MessageBreak
|
|
in compatibility mode}}{}}
|
|
\newcommand*\bicaption@Info[1]{%
|
|
\PackageInfo{bicaption}{#1}}
|
|
\newcommand*\bicaption@InfoNoLine[1]{%
|
|
\PackageInfo{bicaption}{#1\@gobble}}
|
|
\newcommand*\bicaption@Warning[1]{%
|
|
\bicaption@WarningNoLine{#1\on@line}}
|
|
\newcommand*\bicaption@WarningNoLine[1]{%
|
|
\PackageWarning{bicaption}{#1.^^J\bicaption@wh\@gobbletwo}}
|
|
\newcommand*\bicaption@wh{%
|
|
See the bicaption package documentation for explanation.}
|
|
\newcommand*\bicaption@Error[1]{%
|
|
\PackageError{bicaption}{#1}\bicaption@eh}
|
|
\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{bi-swap}[1]{%
|
|
\caption@set@bool\bicaption@ifswap{#1}}
|
|
\DeclareCaptionOption{lang}{%
|
|
\caption@ifundefined\bicaption@language
|
|
\bicaption@language@setupkeys
|
|
\relax
|
|
\def\bicaption@language{#1}%
|
|
\let\bicaption@language@setoptions\@empty}
|
|
\let\KV@caption@language\KV@caption@lang
|
|
\newcommand*\bicaption@language@keylist{}
|
|
\newcommand*\DeclareCaptionLangOption[1]{%
|
|
\@ifundefined{KV@caption@#1}%
|
|
{\bicaption@Error{Undefined caption option `#1'}}%
|
|
{\@cons\bicaption@language@keylist{{#1}}}}
|
|
\let\DeclareCaptionLanguageOption\DeclareCaptionLangOption
|
|
\newcommand*\bicaption@language@setupkeys{%
|
|
\def\@elt##1{%
|
|
\expandafter\let\csname KV@bicaption@##1\expandafter\endcsname
|
|
\csname KV@caption@##1\endcsname
|
|
\@namedef{KV@caption@##1}{\bicaption@KV{##1}}}%
|
|
\bicaption@language@keylist
|
|
\let\@elt\relax}
|
|
\newcommand\bicaption@KV[2]{%
|
|
\@bicaption@KV{#1}{#2}%
|
|
\l@addto@macro\bicaption@language@setoptions{%
|
|
\@bicaption@KV{#1}{#2}}}
|
|
\newcommand\@bicaption@KV[1]{%
|
|
\@nameuse{KV@bicaption@#1}}
|
|
\DeclareCaptionLangOption{name}
|
|
\newcommand*\bicaption@selectlanguage[1]{%
|
|
\caption@ifundefined\bicaption@language{}{%
|
|
\expandafter\selectcaptionlanguage\expandafter#1\expandafter
|
|
{\bicaption@language}%
|
|
\bicaption@language@setoptions}}
|
|
\g@addto@macro\caption@beginhook{%
|
|
\bicaption@selectlanguage\@firstoftwo}
|
|
\providecommand*\selectcaptionlanguage[1]{%
|
|
#1\select@language\selectlanguage}
|
|
\caption@ExecuteOptions{caption}{bi-lang=0,bi-slc=1,bi-swap=0}
|
|
\ifcsname captionmainlanguage\endcsname
|
|
\bicaption@InfoNoLine{%
|
|
main language is set to \captionmainlanguage}
|
|
\else\ifcsname bbl@main@language\endcsname
|
|
\bicaption@InfoNoLine{%
|
|
babel found, main language is \bbl@main@language}
|
|
\let\captionmainlanguage\bbl@main@language
|
|
\else\ifcsname xpg@main@language\endcsname
|
|
\bicaption@InfoNoLine{%
|
|
polyglossia found, main language is \xpg@main@language}
|
|
\let\captionmainlanguage\xpg@main@language
|
|
\else
|
|
\bicaption@InfoNoLine{main language is not set}
|
|
\fi\fi\fi
|
|
\ifcsname captionmainlanguage\endcsname
|
|
\edef\@tempa{%
|
|
\noexpand\captionsetup[bi-first]{lang=\captionmainlanguage}}
|
|
\@tempa
|
|
\fi
|
|
\caption@SetupOptions{bicaption}{\captionsetup[bi-second]{#2}}%
|
|
\caption@ProcessOptions*{bicaption}
|
|
\let\bicaption@addcontentsline@ORI\caption@addcontentsline
|
|
\renewcommand*\caption@addcontentsline[2]{%
|
|
\bicaption@LT@setup
|
|
\global\let\bicaption@LT@setup\relax
|
|
\caption@ifundefined\bicaption@lentry
|
|
{\bicaption@addcontentsline@ORI{#1}{#2}}%
|
|
{\expandafter\bicaption@addcontentsline\expandafter
|
|
{\bicaption@lentry}{#1}{#2}%
|
|
\global\let\bicaption@lentry\@undefined}}
|
|
\newcommand\bicaption@addcontentsline[3]{%
|
|
\begingroup
|
|
\let\caption@addsubcontentslines\@gobble
|
|
\caption@setoptions{bi}%
|
|
\ifnum\bicaption@lang=2\relax \else
|
|
\begingroup
|
|
\caption@setoptions{bi-first}%
|
|
\bicaption@@addcontentsline{#2}{#3}%
|
|
\endgroup
|
|
\fi
|
|
\ifnum\bicaption@lang=1\relax \else
|
|
\begingroup
|
|
\caption@setoptions{bi-second}%
|
|
\bicaption@@addcontentsline{#2}{#1}%
|
|
\endgroup
|
|
\fi
|
|
\endgroup
|
|
\caption@addsubcontentslines{#2}}
|
|
\newcommand*\bicaption@@addcontentsline[2]{%
|
|
\caption@ifcontentsline{#2}{%
|
|
\bicaption@selectlanguage\@secondoftwo
|
|
\bicaption@addcontentsline@ORI{#1}{#2}}}
|
|
\renewcommand\caption@@make[2]{%
|
|
\caption@ifundefined\bicaption@text
|
|
{\begingroup
|
|
\caption@@make@{#1}{#2}%
|
|
\endgroup}%
|
|
{\expandafter\bicaption@@make\expandafter
|
|
{\bicaption@text}{#1}{#2}%
|
|
\global\let\bicaption@text\@undefined}%
|
|
\caption@@make@epilogue}
|
|
\newcommand\bicaption@@make[3]{%
|
|
\caption@setoptions{bi}%
|
|
\ifnum\bicaption@lang=0\relax
|
|
\bicaption@ifslc
|
|
{\caption@slc{#2}{#3}{}{\KV@caption@singlelinecheck0}%
|
|
\caption@slc{#2}{#1}{}{\KV@caption@singlelinecheck0}}%
|
|
{}%
|
|
\fi
|
|
\ifnum\bicaption@lang=2\relax
|
|
\caption@thelabel
|
|
\global\let\caption@thelabel\relax
|
|
\else
|
|
\begingroup
|
|
\caption@setoptions{bi-first}%
|
|
\caption@@make@{#2}{#3}%
|
|
\endgroup
|
|
\fi
|
|
\ifnum\bicaption@lang=1\relax
|
|
\else
|
|
\begingroup
|
|
\caption@setoptions{bi-second}%
|
|
\caption@@make@{#2}{#1}%
|
|
\endgroup
|
|
\fi
|
|
}
|
|
\newcommand\bicaption{\@bicaption\caption}
|
|
\newcommand\bicaptionbox{\@bicaption\captionbox}
|
|
\newcommand\bisubcaption{\@bicaption\subcaption}
|
|
\let\subbicaption\bisubcaption
|
|
\newcommand\bisubcaptionbox{\@bicaption\subcaptionbox}
|
|
\let\subbicaptionbox\bisubcaptionbox
|
|
\newcommand*\@bicaption[1]{%
|
|
\@ifstar
|
|
{\def\bicaption@cmd{\bicaption@star{#1}}%
|
|
\@@bicaption}%
|
|
{\def\bicaption@cmd{#1}%
|
|
\caption@dblarg\@@@bicaption}}
|
|
\newcommand\@@bicaption[1]{%
|
|
\@@@@bicaption{}{#1}[]}
|
|
\long\def\@@@bicaption[#1]#2{%
|
|
\caption@dblarg{\@@@@bicaption{#1}{#2}}}
|
|
\long\def\@@@@bicaption#1#2[#3]#4{%
|
|
\caption@getlabel#2\label{}\@nil
|
|
\bicaption@ifswap
|
|
{\bicaption@setup{#1}{#2}%
|
|
\bicaption@cmd[{#3}]{#4}}%
|
|
{\bicaption@setup{#3}{#4}%
|
|
\bicaption@cmd[{#1}]{#2}}}
|
|
\long\def\bicaption@star#1[#2]{#1*}
|
|
\newcommand\LT@bicaption{%
|
|
\noalign\bgroup
|
|
\@ifstar
|
|
{\gdef\bicaption@cmd{\LT@c@ption\@gobble}%
|
|
\LT@@bicaption}%
|
|
{\gdef\bicaption@cmd{\LT@c@ption\@firstofone}%
|
|
\caption@dblarg\LT@@@bicaption}}
|
|
\newcommand\LT@@bicaption[1]{%
|
|
\LT@@@@bicaption{}{#1}[]}
|
|
\long\def\LT@@@bicaption[#1]#2{%
|
|
\caption@dblarg{\LT@@@@bicaption{#1}{#2}}}
|
|
\long\def\LT@@@@bicaption#1#2[#3]#4{%
|
|
\gdef\bicaption@LTsetup{%
|
|
\caption@getlabel#2\label{}\@nil
|
|
\bicaption@LT@setup}%
|
|
\gdef\bicaption@LT@setup{%
|
|
\bicaption@ifswap
|
|
{\bicaption@setup{#1}{#2}}%
|
|
{\bicaption@setup{#3}{#4}}}%
|
|
\bicaption@ifswap
|
|
{\egroup\bicaption@cmd[{#3}]{#4}}%
|
|
{\egroup\bicaption@cmd[{#1}]{#2}}}
|
|
\let\bicaption@LTsetup\relax
|
|
\let\bicaption@LT@setup\relax
|
|
\g@addto@macro\caption@LT@setup{%
|
|
\bicaption@LTsetup
|
|
\global\let\bicaption@LTsetup\relax}
|
|
\newcommand\bicaption@setup[2]{%
|
|
\def\bicaption@lentry{#1}%
|
|
\def\bicaption@text{\ignorespaces#2}}
|
|
\AtBeginDocument{%
|
|
\ifx\caption@freeze\@undefined \else
|
|
\g@addto@macro\caption@freeze{%
|
|
\let\caption@frozen@bicaption\bicaption
|
|
\def\bicaption{%
|
|
\caption@withoptargs\caption@SC@bicaption}%
|
|
\long\def\caption@SC@bicaption#1#2{%
|
|
\@ifnextchar[%]
|
|
{\caption@SC@bi@caption{#1}{#2}}%
|
|
{\caption@SC@bi@caption@{#1}{#2}}}%
|
|
\long\def\caption@SC@bi@caption#1#2[#3]#4{%
|
|
\caption@@freeze{\bicaption#1{#2}[{#3}]{#4}}%
|
|
\ignorespaces}%
|
|
\long\def\caption@SC@bi@caption@#1#2#3{%
|
|
\caption@@freeze{\bicaption#1{#2}{#3}}%
|
|
\ignorespaces}%
|
|
\l@addto@macro\caption@warmup{%
|
|
\let\bicaption\caption@frozen@bicaption}}%
|
|
\fi}
|
|
\endinput
|
|
%%
|
|
%% End of file `bicaption.sty'.
|
|
|