附加文件在字幕中不起作用

附加文件在字幕中不起作用

在某些图的标题中,我想使用 attachmentfile2 包链接到文件。但是当我尝试使用 XeTeX、MiKTeX 和 TeXstudio 编译以下示例时,我收到了** WARNING ** Unresolved object reference "atfi_obj_6" found!!!第一个警告,并且some.pdf未包含在内。another.pdf包含在生成的文档中,但两次。

有人知道如何解决这个问题吗?

\documentclass{article}
\usepackage{caption}
\usepackage{attachfile2}
\usepackage{hyperref}

\begin{document}
    \listoffigures
    \begin{figure}
        \caption[Custom Name]{Some Figure \textattachfile{some.pdf}{Link}}
    \end{figure}

    \begin{figure}
        \caption{Another Figure \textattachfile{another.pdf}{Link}}
    \end{figure}
\end{document}

\listoffigures如果开头没有,那么两个图形都会出现同样的问题。

编辑 我忘了说我查看了*.atfi包含附件或附件路径校验和的文件。在标题内使用附件(不起作用)和在标题外使用附件(工作正常)时的校验和是相同的,所以可能是某种时间问题?

编辑2

根据 Herberts 的回答,我编写了一个命令,该命令可以显示更像默认标题的标题和图形列表中与默认标题相似的条目。

\documentclass{article}
\usepackage{caption}
\usepackage{attachfile2}

\def\mycaption#1#2#3{{\par\centering\refstepcounter{figure}%
    \figurename\ \thefigure: #1 \textattachfile{#2}{#3}\par}%
    \addcontentsline{lof}{figure}{\protect\numberline {\thefigure}{\ignorespaces #1}}}

\begin{document}
    \listoffigures

    \begin{figure}
        \mycaption{Some Figure}{some.pdf}{Link1}       
    \end{figure}
    \begin{figure}
        \caption[Some Figure]{Some Figure}
    \end{figure}

\end{document}

这会导致文件中出现以下条目*.lof,因此对图形列表样式的更改也应适用于此命令生成的条目(我之所以这么认为,是因为它们看起来几乎相同):

\contentsline {figure}{\numberline {1}{\ignorespaces Some Figure}}{1}{figure.1}
\contentsline {figure}{\numberline {2}{\ignorespaces Some Figure}}{1}{figure.caption.3}

此解决方案的缺点是我必须在两个地方定义自定义标题样式(我没有提到这一点,因为这对于重现我的问题来说不是必要的)。因此,我希望有一个使用默认命令的解决方案\caption

但就目前而言,这个可以完成工作。

答案1

附加文件时始终使用可选参数:

\PassOptionsToPackage{colorlinks}{hyperref}
\documentclass{article}
\usepackage{caption}
\usepackage{attachfile2}

\begin{document}
  \listoffigures
  \begin{figure}
     \caption[Custom Name\textattachfile{Namenlos-1.pdf}{Link}]{Some Figure}
  \end{figure}

  \begin{figure}
    \caption[Another Figure\textattachfile{Namenlos-2.pdf}{Link}]{Another Figure }
  \end{figure}

\end{document}

或者,创建您自己的图形列表:

\documentclass{article}
\usepackage[color={1 0 0}]{attachfile2}
\usepackage{caption}
\def\mycaption#1#2#3{{\par\centering\refstepcounter{figure}%
  \label{fig-\thefigure}\figurename: \thefigure\ #1 \textattachfile{#2}{#3}\par}%
  \addtocontents{lof}{\noindent
    \figurename:\ \thefigure\ #1\hfill\pageref{fig-\thefigure}\par}}

\begin{document}
  \listoffigures
  \begin{figure}
    \mycaption{Figure}{Namenlos-1.pdf}{Link1}       
  \end{figure}
\clearpage
  \begin{figure}
    \mycaption{Another Figure}{Namenlos-2.pdf}{Link2}
  \end{figure}

\end{document}

答案2

据我所知,attachfile 和 attachmentfile2 软件包的文档中说,它们仅在排版引擎为 pdftex 时才有效;XeLaTeX 不使用该排版引擎,并且本身不生成 pdf 文件;而是生成 DVI 文件的扩展版本(9 到 UNICODE),当您运行它时,它会自动调用将 dvi 文件转换为 pdf 的 dvitopdfm 程序的扩展版本。Dvi 文件不支持注释,因此它是一个纯粹的 mireclae che,使用 XeLaTeX 运行您的测试文件不会产生更严重的错误。也许它可以与 LuaLaTeX 一起工作,因为底层排版引擎 luatex 是 pdftex 高级版本的扩展。

答案3

我想让你知道我的最终解决方案。由于它使用了与以前不同的方法,因此我没有编辑问题。

marginnote现在我正在使用可以定义相当于浮点数内部等的包\marginpar。在我看来,这个看起来也比标题中的链接更好。

\documentclass{article}
\usepackage[color={0 0 0}]{attachfile2} % use black as link color
\usepackage[demo]{graphicx} % show placeholder
\usepackage{marginnote} % like \marginpar but inside of floats etc.

\begin{document}
    \begin{figure}
        \marginnote{\textattachfile{some.pdf}{Link}}}
        \centering
        \includegraphics{somefigure}
        \caption[Some]{Some Figure }{
    \end{figure}
\end{document} 

顺便说一句,您可以使用 Unicode 回形针作为链接文本,以获得比默认回形针更好的回形针:\symbol{"1F4CE}->

相关内容