On 14/06/2011 22:00, Stephan Hennig wrote: > Hi, > > xparse's \NewDocumentCommand doesn't seem to play well with hyperref > bookmarks. In this code > > \listfiles > \documentclass{article} > \usepackage{xparse} > \usepackage{hyperref} > \begin{document} > \NewDocumentCommand{\fooa}{}{FooA} > \DeclareExpandableDocumentCommand{\foob}{m}{FooB} > \section{aaa \fooa\ bbb \foob{} ccc} > \end{document} > > text from macro \fooa doesn't show up in the bookmark. Fortunately, it > works at least for macro \foob. > > Is that expected behaviour? Would it be possible to make > \NewDocumentCommand macros work with hyperref bookmarks? I'd prefer > using \NewDocumentCommand macros because of the mandatory argument of > \DeclareExpandableDocumentCommand macros which I don't need in my context. > > Best regards, > Stephan Hennig Hello Stephan, That is not trivial in general because you need to know what definition to use in an expansion context (arguments or not). That can only really be done by a programmer, not an automated system. For example, in siunitx I do provide appropriate 'shortcut' definitions and hook them into hyperref using \pdfstringdefDisableCommands. Doing that means making some pretty careful judgements on what should happen in bookmarks: many things simply do not make sense there. In the case case you mention, I'm not sure why you have used \DeclareExpandableDocumentCommand{\foob}{m}{FooB} rather than \DeclareExpandableDocumentCommand{\foob}{}{FooB} which works fine. -- Joseph Wright