反向引用数字

反向引用数字

backref与支持在 LaTeX 文档中反向引用书目项目的软件包类似,我想在图表列表中使用反向引用。有没有一种简洁的方法来实现这一点?

编辑:我想在 LoF 中的标题后面添加文本,说明给定图形在哪些页面上被引用。

例如:

2.3 制造过程可视化(参考第 3、4 和 8 页) ...................................... 3

答案1

这只是一个概念证明,它不会检查同一页面上的重复引用或两个或多个引用等。它仍然需要大量改进和针对活动字符的保护,使其与超引用一起工作等。

要使用它,请将命令放在\makefigreflist序言中并使用自定义\figcaption[shortcap]{longcap}{label}\figref{label}命令。它必须经过两次 latexed。

编辑 1:将信息直接写入输出文件并使其更安全

\documentclass{article}
\makeatletter

\newcommand*\figreflistout[1]{}

\newcommand*\makefigreflist{%
    \begingroup
        \makeatletter
        \@input{\jobname.frl}%
        \newwrite\frl@outfile
        \immediate\openout\frl@outfile=\jobname.frl\relax
    \endgroup
    \let\makefigreflist\@empty
    \renewcommand*\figreflistout{%
        \@bsphack
        \begingroup
            \@sanitize
            \@figreflistout}%
    }

\newcommand*\@figreflistout[1]{%
        \protected@write\frl@outfile{}%
            {\string\addtofigreflist{#1}{\thepage}}%
    \endgroup
    \@esphack}

\newcommand*\addtofigreflist[2]{%
    \@ifundefined{frl@#1}%
        {\expandafter\protected@xdef\csname frl@#1\endcsname{#2}}%
        {\expandafter\protected@xdef\csname frl@#1\endcsname{\csname frl@#1\endcsname, #2}}}

\newcommand*\printfigreflist[1]{%
    \@ifundefined{frl@#1}%
        {\ (not referenced)}%
        {\ (referenced on page~\@nameuse{frl@#1})}}

\newcommand\defaultcapt{}

\newcommand\figcaption[3][\defaultcapt]{%
    \renewcommand\defaultcapt{#2}%
    \caption[#1\protect\printfigreflist{#3}]{#2}%
    \label{#3}}

\newcommand\figref[1]{%
    \ref{#1}\figreflistout{#1}}

\makeatother

\makefigreflist

\begin{document}
\listoffigures

\begin{figure}
    \figcaption{First figure}{fig:01}
    \figcaption{Second figure}{fig:02}
    \figcaption{Third figure}{fig:03}
\end{figure}

\bigskip

In figure \figref{fig:01} and \figref{fig:02} it is..
\clearpage
In figure \figref{fig:01}
\clearpage
In figure \figref{fig:01} and \figref{fig:02} it is..

\end{document}

在此处输入图片描述

相关内容