我有图表列表页。其中一些图表的标题有引文。我怎样才能从图表列表页中删除引文并将引文保留在正常页面上?问候
::::::::::::::::::::::::::: 附录我正在使用以下命令:
\newcommand{\munepsfig}[3][scale=1.0]{%
\begin{figure}[!htbp]
\centering
\vspace{2mm}
\includegraphics[#1]{figures/#2.eps}
\caption{#3}
\label{fig:#2}
\end{figure}
}
示例用法:
\munepsfig[scale=0.5,angle=90]{barchart}{Population over time}
答案1
使用可选参数\caption
:
\caption[Text to the LoF]{Text for the document \cite{xx}}
通过对原始问题的编辑,我建议\munepsfig
(使用xparse
包)进行这样的定义:
\usepackage{xparse}
\NewDocumentCommand\munepsfig{O{scale=1.0}mom}
{%
\begin{figure}[!htbp]
\centering
\vspace{2mm}
\includegraphics[#1]{figures/#2.eps}
\IfNoValueTF {#3}
{\caption{#4}}
{\caption[#3]{#4}}
\label{fig:#2}
\end{figure}%
}
像这样使用它:
\munepsfig[scale=0.5,angle=90]{image}[Text for the LoF]{Text for the document}
如果你想在 LoF 中使用不同的文本,或者简单地
\munepsfig[scale=0.5,angle=90]{image}{Text for the document and the LoF}
使文档和 LoF 中包含相同的文本。
请注意,新的第三个参数是可选的,因此只有在您想使用可选参数时才必须使用它\caption
。
答案2
如果你只\cite
在标题中使用,而不使用其他引用命令,也没有可选参数,那么另一种方法是使用etoolbox
添加前置和后置钩子\listoffigures
并重新定义\cite
\usepackage{etoolbox}
\makeatletter
\let\oldcite\cite
\pretocmd{\listoffigures}{\def\cite{\ignorespaces\@gobble}}{}{}
\apptocmd{\listoffigures}{\let\cite\oldcite}{}{}
\makeatother
答案3
如果你想要按照bibliographystyle
外观进行分类,我建议使用包notoccite
。
它允许在目录中引用,但其编号遵循其在正文中出现的位置。
答案4
您需要更改自定义命令的设置以接受一个附加参数,即要写入图片列表的材料。在下面的代码中,的内容将显示在图片列表中;除了引用命令外,#4
它应该与非常相似。#3
\newcommand{\munepsfig}[4][scale=1.0]{%
\begin{figure}[!htbp]
\centering
\vspace{2mm}
\includegraphics[#1]{figures/#2.eps}
\caption[#4]{#3}
\label{fig:#2}
\end{figure}
}
您可以按如下方式使用这个修改后的命令:
\munepsfig[scale=0.5,angle=90]{barchart}{Population over time
\cite{some-source}}{Population over time}
这种方法的一个缺点是:如果要在图表列表中显示的材料与要在标题中显示的材料相同,您仍然需要提供第四个参数。如果不提供,LaTeX 将继续在输入流中查找下一个标记(实际上可以是任何东西),并将其视为命令的第四个参数。如果您这样做,可能会出现奇怪的错误消息和奇怪的崩溃……