将文件内容作为 PDF 注释(尊重 UTF-8)

将文件内容作为 PDF 注释(尊重 UTF-8)

我想将文件内容呈现为 PDF 文件中的注释。我决定pdf评论,这样就可以了。pdfcomment需要将换行符排版为\textCR\textLF。这让我想到了以下设置:

我想读取文件的内容,用 替换换行符\textCR\textLF并将其传递给 pdfcomment。作为额外的挑战,需要保留诸如{、 、 .. 之类的字符序列。\_

粗略的例子:

demo.bib

@article{demo,
  author = {Demo Frühling},
  comment = {Fr\"{u}hling}
}

读取文件后,应将以下文本传递给 pdfcomment:

@article{demo,\textCR\textLF
  author = {Demo Frühling},\textCR\textLF
  comment = {Fr\"{u}hling}\textCR\textLF
}\textCR\textLF

长期期望结果:

\pdfcomment[icon=Help]{
@article{demo,\textCR\textLF
  author = {Demo Frühling},\textCR\textLF
  comment = {Fr\"{u}hling}\textCR\textLF
}\textCR\textLF}

代码示例(无效)

\documentclass{article}

\usepackage{pdfcomment}

\newread\reader

\begin{document}

\begin{filecontents*}{demo.bib}
@article{demo,
  author = {Demo Frühling},
  comment = {Fr\"{u}hling}
}
\end{filecontents*}

\pdfcomment[icon=Help]{
\makeatletter
\advance\endlinechar \@M
\openin%
\reader=demo.bib%
\relax
\loop
    \read\reader to \x
    \unless\ifeof\reader
    \x \textCR\textLF
\repeat
\closein\reader
\advance\endlinechar -\@M
\makeatother
}

\end{document}

其结果如下:

帮助图标带有错误文字

这不是我想要的。评论应该包含文件全文。

解决方案思考

答案1

其实很简单 - 我只是不确定是否可以轻松包含换行符,但我相信你会发现的。使用 expl3 因为它的可读性更强 ;-)

\documentclass{article}

\usepackage{pdfcomment}
    
\begin{filecontents*}{demo.bib}
    @article{demo,
        author = {demo}
    }
\end{filecontents*}

\begin{document}


\ExplSyntaxOn
\file_get:nnN {demo.bib} {
    \char_set_catcode_other:N \_ 
    \char_set_catcode_other:N \$
    \char_set_catcode_other:N \{
    \char_set_catcode_other:N\}
} \l_tmpa_tl
    
\exp_args:NnV \use:n {\pdfcomment[icon=Help]}{\l_tmpa_tl}
    
\ExplSyntaxOff
\end{document}

如果您不想手动将所有字符更改为其他字符,您也可以遍历序列并将文件读取为字符串:

\documentclass{article}

\usepackage{pdfcomment}
    
\begin{filecontents*}{demo.bib}
    @article{demo,
        author = {demo}
    }
\end{filecontents*}

\begin{document}


\ExplSyntaxOn
\ior_new:N \l_tmpa_ior
\ior_open:Nn \l_tmpa_ior {demo.bib}
\seq_clear:N \l_tmpa_seq
\ior_str_map_inline:Nn \l_tmpa_ior {
    \seq_put_right:Nn \l_tmpa_seq {#1}
} 

\exp_args:Nnx \use:n {\pdfcomment[icon=Help]}{\seq_use:Nn \l_tmpa_seq {\textLF}}
\ExplSyntaxOff
\end{document}

相关内容