拆分标题并交叉引用

拆分标题并交叉引用

我目前正在撰写论文,并且正在努力重新定义标题命令。

我有一些大标题,但我不想将它们显示在图表列表中。对于每个标题,我只想使用第一个句子。在某些标题中,我想使用 cleveref 包引用其他浮点数。下面给出了一个最小示例。

\documentclass{article}
\usepackage{cleveref}
\def\mcaption#1{%
    \begingroup
    \edef\@tempa{#1}%
    \expandafter\endgroup
    \expandafter\split\@tempa\relax
}
\def\split#1.#2\relax{\caption[#1]{#1.#2}}
\begin{document}
\listoffigures
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This is a working caption. One can see that ......}
    \label{fig:abc}
\end{figure}
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This caption does not work. See also Figure \cref{fig:abc}}
\end{figure}
\end{document}

这无法生成 PDF,并显示以下错误消息:

./temp.tex:27: 未定义控制序列。 \@cref ...oup =1\count@group =1\def \cref@variant {#1}\newif \if@secondref ... l.27 ... 不起作用。另请参见图 \cref{fig:abc}}

./temp.tex:27: 未定义控制序列。\if@secondref

我是否可以做我想做的事,或者我应该放弃在标题中引用其他浮点数的想法?

答案1

你正在做一件无用的事情,如果标题文本中出现\edef这样的命令,这也是很危险的。\textbf

说啊

\documentclass{article}
\usepackage{cleveref}

\makeatletter
\def\mcaption#1{\split@caption#1\@nil}
\def\split@caption#1.#2\@nil{\caption[#1]{#1.#2}}
\makeatother

\begin{document}
\listoffigures
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This is a working caption. One can see that ......}
    \label{fig:abc}
\end{figure}
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This caption does not work. See also Figure \cref{fig:abc}}
\end{figure}
\end{document}

最好不要使用\split作为名称,因为这是 使用的命令amsmath。不过,我更喜欢一种更简单的方法:

\documentclass{article}
\usepackage{cleveref}

\newcommand\mcaption[2]{\caption[#1]{#1. #2}}

\begin{document}
\listoffigures
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This is a working caption}{One can see that ......}
    \label{fig:abc}
\end{figure}
\begin{figure}
    \centering
    Insert figure here
    \mcaption{This caption does not work}{See also Figure \cref{fig:abc}}
\end{figure}
\end{document}

就像输入一样简单,但功能更加强大。

相关内容