我用阿克塞尔·索末费尔特的双字幕包来设置双语字幕。
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),figurename
和table
选项可以在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/polyglossia
bicaption
\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
内容。