每当我在研究论文中加入图表时,我都会在标题中引用信息来源。但是,我不希望此引用出现在图表/表格列表中。
因此,存在为列表指定单独标题的选项:
\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}]
我更愿意在论点中拼写出“参见:”,因为其中可能包含更复杂的东西。