背景

背景

背景

系统会根据书名和作者姓名自动生成宏。书名有时可能包含 TeX 特定的标记,例如~ldots{}

问题

在设置文档属性时,标题包括书名宏中的逐字值。

代码

考虑:

\def\BookTitle{The Strange Case of Dr.~Jekyll and Mr.~Hyde}
\setupinteraction[title=\BookTitle,]
\starttext \input knuth \stoptext

生成:

输出

问题

如何替换波浪号(和其他可能的实体),以便将排版值(例如,不间断空格)传递给命令title的选项setupdocument

\expandafter似乎不是正确的方法(而且,没有办法知道需要扩展多少项)。宏\detokenize似乎无法解释~令牌。使用\the\relax破坏了构建。

答案1

有一个内置选项可以实现这一点。只需启用指令 即可interaction.identity.preroll。相同的预滚动功能可用于书签references.bookmarks.preroll,另请参阅PDF 书签格式不正确

\enabledirectives[interaction.identity.preroll]
\def\BookTitle{The Strange Case of Dr.~Jekyll and Mr.~Hyde}
\setupinteraction[title=\BookTitle,]
\starttext \input knuth \stoptext
$ pdfinfo test.pdf | grep Title
Title:          The Strange Case of Dr. Jekyll and Mr. Hyde

相关内容