
У меня есть страница списка рисунков. Некоторые из подписей к рисункам имеют цитату. Как мне удалить цитату со страницы списка рисунков и сохранить цитату на обычных страницах? С уважением
::::::::::::::::::::::::::: Дополнение Я использую следующую команду:
\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
для добавления хука pre и post к \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 продолжит искать во входном потоке следующий токен — который может быть буквально чем угодно — и рассматривать его как четвертый аргумент команды. Ожидайте странных сообщений об ошибках и странных сбоев, если вы сделаете это...