我正在尝试将 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
。
不过,上面的代码(从 Adobe 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}
以下是我现在在 Adobe Reader 中得到的结果: