Expl3 clist 中的 PDF 关键字

Expl3 clist 中的 PDF 关键字

我正在尝试将 PDF 关键字添加到我的简历中。在自定义类文件中,我有以下几行:

\clist_new:N \jcsres_keywords_clist
\NewDocumentCommand \keywords {m} { \clist_gset:Nn \jcsres_keywords_clist {#1} }

\AtBeginDocument{
  \hypersetup{
    pdfinfo={
      Author={\jcsres_name_tl},
      Keywords={\jcsres_keywords_clist},
    }
  }
}

\keywords命令旨在用于文档序言中,就像标准类中的\author和一样\title。我希望用标准的逗号分隔列表初始化它,并将列表或多或少直接传递给\hypersetup

不过,上面的代码(从 Adob​​e Reader 中的 PDF 来看)似乎只有一个关键字,其形式为"keyword1,keyword2,"— 完全不是我所希望的。

根据http://en.wikibooks.org/wiki/LaTeX/Hyperlinks#Customization,语法\hypersetup要求是

pdfkeywords={keyword1} {key2} {key3},

有没有一种直接的方法可以在 Expl3 的 clist 和这个语法之间进行转换?

预计到达时间:用户 g.cov建议指某东西的用途hyperxmp;我可能会使用该包,但我想学习如何使用 Expl3 自行进行转换。特别请注意

Keywords = { \clist_use:Nnnn \jcsres_keywords_clist
               {\egroup \bgroup} {\egroup \bgroup} {\egroup \bgroup} }

做过不是工作。

答案1

在此处输入图片描述

其他 PDF 查看器(okular、evince)似乎可以正常显示列表,但似乎只能hyperxmp帮助解决这个问题Adobe Reader

\documentclass{article}
\makeatletter
\def\keywords#1{\def\k@yw@rds{#1}}
\AtBeginDocument{\hypersetup{pdfkeywords={\k@yw@rds}}}
\makeatother

\usepackage{hyperxmp}
\usepackage{hyperref}

\keywords{LaTeX update, clist item}

\begin{document}
Hello.
\end{document}

答案2

你必须使用逗号列表变量:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\clist_new:N \g_jcsres_keywords_clist
\NewDocumentCommand \keywords {m} { \clist_gset:Nn \g_jcsres_keywords_clist {#1} }

\AtBeginDocument
 {
  \hypersetup
   {
    pdfinfo=
    {
     Keywords={\clist_use:Nnnn \g_jcsres_keywords_clist {,~} {,~} {,~} },
    }
   }
 }
\ExplSyntaxOff
\makeatletter
\@onlypreamble\keywords % don't allow \keywords in the document
\makeatother


\usepackage{hyperref}

\keywords{LaTeX3, clist}

\begin{document}

Hello.

\end{document}

在此处输入图片描述

如果您想要传递用括号括起来的关键字列表,中间不加逗号,因为这似乎是使用它们的最佳方式,方法如下:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\seq_new:N \g_jcsres_keywords_seq
\NewDocumentCommand \keywords {m}
 {
  \clist_map_inline:nn {#1}
   { \seq_gput_right:Nn \g_jcsres_keywords_seq { {##1} } }
 }

\AtBeginDocument
 {
  \hypersetup
   {
    pdfinfo=
    {
     Keywords={\seq_use:Nnnn \g_jcsres_keywords_seq {~} {~} {~} },
    }
   }
 }
\ExplSyntaxOff
\makeatletter
\@onlypreamble\keywords
\makeatother


\usepackage{hyperref}

\keywords{LaTeX3, clist}

\begin{document}

Hello.

\end{document}

以下是我现在在 Adob​​e Reader 中得到的结果:

在此处输入图片描述

相关内容