背景
系统会根据书名和作者姓名自动生成宏。书名有时可能包含 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