这个问题导致了一个新的方案的出现:
intopdf
目的
我想要实现以下目标:
嵌入
paper.bib
PDFpaper.bib
应该使用与 mimetype 关联的操作系统工具打开application/x-bibtex
已
paper.bib
在 Acrobat Reader 的附件部分列出附件部分应有适当的描述
已
paper.bib
在 PDF 中的“\EmbedFiles”中列出(可使用 Acrobat Pro 检查)已
paper.bib
在书签部分列出paper.bib
PDF 中有一个有效链接在印刷版中也显示链接
没有奇怪的附加图标。不应出现以下内容:
链接应标记为链接
相关问题:
已尝试的解决方案
1.嵌入文件和...一起下肢
\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{embedfile}
\usepackage{hypgotoe}
\begin{filecontents}{paper.bib}
@article{demo,
author={Demo Author}
}
\end{filecontents}
\begin{document}
\embedfile[
desc={BibTeX entry of this paper},
mimetype=application/x-bibtex
]{paper.bib}
\href{gotoe:embedded=paper.bib}{BibTeX}
\end{document}
- 是:嵌入
paper.bib
PDF - 是:
paper.bib
应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
- 是:已
paper.bib
在 Acrobat Reader 的附件部分列出 - 是:附件部分应该有适当的描述
- 是:已
paper.bib
在 PDF 中的“\EmbedFiles”中列出 - 部分:已
paper.bib
在书签部分列出(可以:SumatraPDF,不可以:Acrobat Pro X) paper.bib
否: PDF 中有一个有效链接。SumatraPDF 打开tex
文件,Acrobat Reader 不执行任何操作- 是:在印刷版中也显示链接
- 是:没有奇怪的附加图标
- 是:链接应标记为链接
2.航海家
\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{navigator}
\begin{filecontents}{paper.bib}
@article{demo,
author={Demo Author}
}
\end{filecontents}
\begin{document}
\embeddedfile[BibTeX entry of this paper]{paper.bib}{paper.bib}
\openfilelink{paper.bib}{BibTeX}
\end{document}
- 是:嵌入
paper.bib
PDF - 是:
paper.bib
应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
- 是:已
paper.bib
在 Acrobat Reader 的附件部分列出 - 是:附件部分应该有适当的描述
- 是:已
paper.bib
在 PDF 中的“\EmbedFiles”中列出 - 否:已
paper.bib
在书签部分列出 - 部分:PDF 中有一个有效链接
paper.bib
:双击可在 SumatraPDF 中打开文件,但在 Acrobat Reader 中不起作用 - 是:在印刷版中也显示链接
- 是:没有奇怪的附加图标
- 否:链接应标记为链接
3.附加文件
\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{attachfile}
\begin{filecontents}{paper.bib}
@article{demo,
author={Demo Author}
}
\end{filecontents}
\begin{document}
% We need "doubleprint", because the text of \textattachfile is not printed when printing a PDF
% We use the idea from https://tex.stackexchange.com/a/19045/9075, accepting that
% the pointers to the files are renderedin semi-bold way
\newlength{\Urlname}
\newcommand{\doubleprint}[1]{\setlength{\Urlname}{\widthof{#1}}\hspace{-\Urlname}#1}
\textattachfile[%
print=true,%
color=0 0 0,%
icon=Paperclip,%
description={BibTeX entry of this paper},%
mimetype=application/x-bibtex%
]{paper.bib}{BibTeX}%
\doubleprint{BibTeX}
\end{document}
- 是:嵌入
paper.bib
PDF - 是:
paper.bib
应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
- 是:已
paper.bib
在 Acrobat Reader 的附件部分列出 - 是:附件部分应该有适当的描述
- 否:已
paper.bib
在 PDF 中的“\EmbedFiles”中列出 - 否:已
paper.bib
在书签部分列出 - 部分:在 PDF 中有一个有效链接
paper.bib
。在 Acrobat Reader 中双击,在 SumatraPDF 中单击 - 是:在印刷版中也显示链接
- 否:奇怪的附加图标 Acrobat Reader
- 否:链接应标记为链接
该/Type /Embeddedfile
条目出现在 PDF 中嵌入文本的旁边,而不是在全局文件目录中:
该图标表示附件。在 Acrobat Pro 中,可以拖放附件:
4.嵌入文件结合 stackoverflow 调整
该解决方案扩展了第一个解决方案
提议:
\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{embedfile}
\usepackage{hyperref}
\usepackage[atend]{bookmark}
% How do I make an attached non-pdf file display like a link?
% (http://tex.stackexchange.com/q/230581)
\makeatletter
\newcommand*{\embeddedfilelink}[2]{%
\begingroup
\leavevmode
\pdfstartlink
attr{%
\Hy@setpdfborder
\ifx\@pdfhighlight\@empty
\else
/H\@pdfhighlight
\fi
\ifx\@filebordercolor\relax
\else
/C[\@filebordercolor]%
\fi
}%
user{%
/Subtype/Link%
/A<<%
/Type/Action%
/S/JavaScript%
/JS(this.exportDataObject({cName: "#1", nLaunch: 2}))%
>>%
}%
\relax
\Hy@colorlink\@filebordercolor#2%
\close@pdflink
\endgroup
}
\makeatother
\begin{filecontents}{paper.bib}
@article{demo,
author={Demo Author}
}
\end{filecontents}
\begin{document}
\embedfile[
desc={BibTeX entry of this paper},
mimetype=application/x-bibtex
]{paper.bib}
\embeddedfilelink{paper.bib}{BibTeX}
%hint from https://tex.stackexchange.com/a/260439/9075
\BookmarkAtEnd{
\bookmarksetup{startatroot}
\bookmark[level=0,rawaction={
/S/JavaScript/JS(%
this.exportDataObject({cName: "paper.bib", nLaunch: 2})%
)%
}]{paper.bib}
}
\end{document}
- 是:嵌入
paper.bib
PDF - 是:
paper.bib
应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
- 是:已
paper.bib
在 Acrobat Reader 的附件部分列出 - 是:附件部分应该有适当的描述
- 是:已
paper.bib
在 PDF 中的“\EmbedFiles”中列出 - 部分:已
paper.bib
在书签部分列出(SumatraPDF 中两次,OK:Acrobat Pro X) paper.bib
部分: PDF 中有一个有效链接。SumatraPDF 打开tex
文件,Acrobat Reader 打开正确的应用程序- 是:在印刷版中也显示链接
- 是:没有奇怪的附加图标
- 是:链接应标记为链接
调试提示
列出 PDF 内部结构的工具在检查 PDF 文件的最佳工具?. 以上截图由 Acrobat Professional X 制作。iText RUPS似乎接近 Acrobat Professional 的功能。
问题
如何实现吃最少的以下目标得到满足:
paper.bib
应该使用与 mimetype 关联的操作系统工具打开application/x-bibtex
- 已
paper.bib
在 Acrobat Reader 的附件部分列出 - 附件部分应有适当的描述
- 已
paper.bib
在书签部分列出 paper.bib
PDF 中有一个有效链接- 在印刷版中也显示链接
可选地,以下内容是好的:
- 没有奇怪的附加图标。
- 链接应标记为链接
答案1
这个解决方案并不能解决所有的问题,但是它并不适合评论:
这与 类似attachfile
,但没有\doubleprint
和 9、10 固定,并且使注释不可移动:
\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{hyperref}
\begin{filecontents}{paper.bib}
@article{demo,
author={Demo Author}
}
\end{filecontents}
\makeatletter
\newcommand\attachandlink[4]{%
\leavevmode%
\immediate\pdfobj stream attr {
/Subtype /\pdfescapename{#2}
} file{#1}%
\immediate\pdfobj{<<
/Type /Filespec
/F (\pdfescapestring{#1})
/EF << /F \the\pdflastobj\space 0 R >>
>>}%
\pdfstartlink user {
/Subtype /FileAttachment
/FS \the\pdflastobj\space 0 R
/F 416
/CA 0
/Contents (\pdfescapestring{#3 Double click to open.})
}%
\pdfstartlink attr{
\Hy@setpdfborder
\ifx\@pdfhighlight\@empty%
\else%
/H\@pdfhighlight
\fi%
\ifx\@urlbordercolor\relax%
\else%
/C[\@urlbordercolor]
\fi%
} user {
/Subtype /Link
}%
#4%
\pdfendlink%
\pdfendlink%
}
\makeatother
\begin{document}
\attachandlink{paper.bib}{application/x-bibtex}{BibTeX entry for this paper}{BibTeX}
\end{document}
- 是:将 paper.bib 嵌入 PDF
- 是:paper.bib 应该使用与 mimetype application/x-bibtex 关联的操作系统工具打开
- 是:在 Acrobat Reader 的附件部分列出 paper.bib
- 是:附件部分应该有适当的描述
- 否:在 PDF 中的“/EmbeddedFiles”中列出 paper.bib 
- 否:将 paper.bib 列在书签部分
- 是:PDF 中有一个指向 paper.bib 的有效链接,需要在 Adobe Reader 上双击
- 是:在印刷版中也显示链接
- 是/否:Adobe Reader 中仅在鼠标悬停时出现奇怪的附加图标
- 是:链接应标记为链接
中列出的目标 5/EmbeddedFiles
很容易添加,并且可能也会添加paper.bib
到 SumatraPDF 的书签部分(我不确定这一点,我无法让 SumatraPDF 显示任何 PDF 的书签部分),但会有副作用:要在 Adobe Reader 中不使用 Javascript 打开嵌入文件,必须将其作为File Attachment Annotation
特殊位置添加,而/EmbeddedFiles
目录中引用的文件则附加到整个文档。一个文件可以通过两种方式引用,但例如 Acrobat Reader 会列出该文件两次。