# [luatex] Getting all symbols

Ulrike Fischer luatex at nililand.de
Wed Jun 13 09:54:51 CEST 2012

Am Wed, 13 Jun 2012 08:35:24 +0200 schrieb Arno Trautmann:

> I tried your example with fontspec and am somewhat puzzled with the
> result. The L3 syntax seems to lead to some strange entries, e.g.:
>
> pdfdecimaldigits
> key code > fontspec/Script/Braille
> @ifdot
> key var > fontspec/Script/osma.req
> key var > fontspec/CharacterWidth/Quarter.default
>
> How do these key code and key var expressions make it into the
> hashtokens? I guess it's because of the ~ that is used in L3, but I
> don't the exact reasoning.

Well the list contains other command names which looks a bit odd
like e.g.   "\T1\'-C"    ;-)

The command names starting with "key var" are created when you
define keys. E.g. this

============================
\documentclass{article}
\usepackage{expl3}
\RequirePackage{l3keys2e}
\begin{document}
\ExplSyntaxOn
\keys_define:nn {keytest}
{
famtest / style         .code:n =
{
blub
},
}
\ExplSyntaxOff

\directlua{
for name in pairs(tex.hashtokens()) do
print(name)
end}
\end{document}
==============================

will led to the command name

"key var > keytest/famtest/style.req"

The prefix comes from the following definition in l3keys:

\tl_const:Nn \c_keys_vars_root_tl { key~var~>~ }

Using spaces inside commands names (and keys like in beamer and pgf)
are sometimes a bit confusing as it can be unclear when the command
actually ends but on the other side they improve readability.

--
Ulrike Fischer