标题中的引用作为单独的参数

标题中的引用作为单独的参数

每当我在研究论文中加入图表时,我都会在标题中引用信息来源。但是,我不希望此引用出现在图表/表格列表中。

因此,存在为列表指定单独标题的选项:

\caption[This is a caption.]{This is a caption. See: \citeinline[249]{batman11e}.}

其产生的内容如下:

图 1.1:这是标题。参见:《蝙蝠侠》(2011 年),第 249 页。

但是,这个解决方案包含相当多的冗余。有没有办法提出一个单独的标题命令,提供某种形式的“引用选项”并自动添加前缀和引用?

一些伪代码来展示它:

\capncite{This is a caption.}[\citeinline[249]{batman11e}]

将产生与上面第一个代码片段相同的结果。

我认为理论上可以通过某种宏来实现这一点,但我不知道这是否是首选方案。

补充:citeinline-command 定义如下:

\DeclareMultiCiteCommand{\citeinline}{\cite}{\multicitedelim}

\renewbibmacro*{cite:labelyear+extrayear}{% Change year to (year)
\iffieldundef{labelyear} %
  {}
  {\printtext[bibhyperref]{%
   \printtext[parens]{%
   \printfield{labelyear}%
   \printfield{extrayear}}}}}

答案1

使用以下命令可轻松完成此操作xparse

\usepackage{xparse}
\NewDocumentCommand{\capncite}{omO{\unskip}}
  {\IfNoValueTF{#1}
     {\caption[#2]{#2 #3}}
     {\caption[#1]{#2 #3}}%
  }

你的例子可以是

\capncite{This is a caption.}[See: \citeinline[249]{batman11e}]

但是也

\capncite[Short]{This is a caption.}[See: \citeinline[249]{batman11e}]

我更愿意在论点中拼写出“参见:”,因为其中可能包含更复杂的东西。

相关内容