如何在不使用 babel 或 polyglossia 的情况下指定双语字幕中的字幕名称?

如何在不使用 babel 或 polyglossia 的情况下指定双语字幕中的字幕名称?

我用阿克塞尔·索末费尔特双字幕包来设置双语字幕。 bicaption需要babel\selectlanguage不同语言设置不同的字幕名称。但是,我无法使用babel/的功能polyglossia,因为它不适用于东亚语言。

为两个标题设置一个name选项很容易,但我无法为不同类型的浮点设置不同的名称。例如,

\documentclass{article}
\usepackage{caption}[2012/02/19 v3.2f]
\usepackage{bicaption}[2011/10/30 v1.0a]
\captionsetup[bi-first]{name=Foo}
\captionsetup[bi-second]{name=Bar}

\begin{document}

\begin{figure}
  \centering FIGURE
  \bicaption{XXX}{YYY}
\end{figure}

\begin{table}
  \centering TABLE
  \bicaption{XXX}{YYY}
\end{table}

\end{document}

我试过

\captionsetup[bi-first,figure]{name=Foo}

没有效果。我试过了

\captionsetup[bi-first]{figurename=Foo}

然后我收到一个错误

! Package caption Error: Can be used only in preamble.

那我该怎么办?有没有一种简单的方法可以使用bicaption而不使用babel

在旧版本的caption包中(例如 2011/11/10 v3.2e),figurenametable选项可以在document环境中使用,但最新版本caption只允许在序言中使用它们。我看不出设置有什么好处\@onlypreamble\caption@SetName。但是,即使我使用旧版本的,我仍然无法设置双语字幕中caption用户定义(通过包)浮点数的名称。newfloat


注意:我不喜欢包\bicaption提供的ccaption,使用起来很复杂。我有能力定义自己的版本\bicaption,但这似乎也是一个糟糕的选择。

目前我可以使用这个奇怪的技巧:

\captionsetup[bi-first]{font=bi-first}
\captionsetup[bi-second]{font=bi-second}
\DeclareCaptionFont{bi-first}{%
  \def\tablename{Table}%
  \def\figurename{Figure}}
\DeclareCaptionFont{bi-second}{%
  \def\tablename{Alter-table}%
  \def\figurename{Alter-figure}}

答案1

我认为你的技巧很好,如果你想让它看起来不那么奇怪,你可以\DeclareCaptionOption使用\DeclareCaptionFont

\documentclass{article}
\usepackage{caption}[2012/02/19 v3.2f]
\usepackage{bicaption}[2011/10/30 v1.0a]

\captionsetup[bi-first]{bi-first}
\captionsetup[bi-second]{bi-second}

\DeclareCaptionOption{bi-first}[]{%
  \def\tablename{Table}%
  \def\figurename{Figure}}
\DeclareCaptionOption{bi-second}[]{%
  \def\tablename{Alter-table}%
  \def\figurename{Alter-figure}}

\begin{document}

\begin{figure}
  \centering FIGURE
  \bicaption{XXX}{YYY}
\end{figure}

\begin{table}
  \centering TABLE
  \bicaption{XXX}{YYY}
\end{table}

\end{document}

但是,我认为一个专门用于bicaption不使用的界面babel/polyglossia会很棒,所以我将在接下来的几天里设计它......(请继续关注。)

(2012-04-09)...完成。我在即将推出的 1.1 版软件包中添加了一个使用lang=without 选项的小界面,因此上述示例也可以写成:babel/polyglossiabicaption

\documentclass{article}
\usepackage{caption}[2012/03/25 v3.3]
\usepackage{bicaption}[2012/04/09 v1.1]

\captionsetup[bi-first]{lang=first}
\captionsetup[bi-second]{lang=second}

\renewcommand\selectcaptionlanguage[2]{%
  \csname select#2language\endcsname}
\newcommand\selectfirstlanguage{%
  \def\tablename{Table}%
  \def\figurename{Figure}}
\newcommand\selectsecondlanguage{%
  \def\tablename{Alter-table}%
  \def\figurename{Alter-figure}}

\begin{document}

\begin{figure}
  \centering FIGURE
  \bicaption{XXX}{YYY}
\end{figure}

\begin{table}
  \centering TABLE
  \bicaption{XXX}{YYY}
\end{table}

\end{document}

此外,我已经\captionsetup[figure][bi-first]{name=Foo}在即将推出的 3.3 版软件包中实现了它caption,因此另一种实现方式是:

\documentclass{article}
\usepackage{caption}[2012/03/25 v3.3]
\usepackage{bicaption}[2012/04/09 v1.1]

\captionsetup[figure][bi-first]{name=Figure}
\captionsetup[figure][bi-second]{name=Alter-figure}

\captionsetup[table][bi-first]{name=Table}
\captionsetup[table][bi-second]{name=Alter-table}

\begin{document}

\begin{figure}
  \centering FIGURE
  \bicaption{XXX}{YYY}
\end{figure}

\begin{table}
  \centering TABLE
  \bicaption{XXX}{YYY}
\end{table}

\end{document}

我将在接下来的几周内发布它们。

关于figurename选项:该选项设计用于babel/polyglossia,因此在文档文本中使用时可能会造成麻烦。由于它从未在文档文本中记录过使用情况,所以我添加了这些\@onlypreamble内容。

相关内容