csnameの挙動について


LaTeX（TeX Live
2018）の環境で、`\csname`を用いてコントロールシーケンストークンを動的に作成したいと考えていますが、思った通りに動作しません。

[code]

    \documentclass[a4paper]{article}
    
    \begin{document}
    
    \def\anaconda{OK}
    \def\a{a}
    % 下記のすべてsnakeと出力させたい
    1. \csname anaconda \endcsname \\ % OKと出力されない
    2. \csname anacond\a \endcsname \\ % OKと出力される
    3. \csname \a naconda \endcsname \\ % OKと出力されない
    
    \end{document}
    
[/code]

`\csname`の使い方が間違っていますでしょうか？  
ネットの情報はほとんどが`\expandafter\def\csname ...
\endcsname`の例であり、`\csname`そのものの挙動について理解したいと思っています。




`\csname...\endcsname` を使えば，スペースを含む制御綴を生成できます。よって，1.と3.では，`\anaconda␣`
という制御綴が生成・使用されています。`\csname...\endcsname` の場合，存在しない制御綴が呼び出されても Undefined
control sequence のエラーは出ず，`\relax` と同等に定義されます。

それに対し，2. の例では `\a` の後のスペースが制御綴直後のスペースということで消えるため，`\anaconda`
という制御綴が意図通りに呼び出せています。

1.と3.においては，`a` の後のスペースを消せば，意図通りの動きをするでしょう。




`\csname...\endcsname` を使えば，スペースを含む制御綴を生成できます。よって，1.と3.では，`\anaconda␣`
という制御綴が生成・使用されています。`\csname...\endcsname` の場合，存在しない制御綴が呼び出されても Undefined
control sequence のエラーは出ず，`\relax` と同等に定義されます。

それに対し，2. の例では `\a` の後のスペースが制御綴直後のスペースということで消えるため，`\anaconda`
という制御綴が意図通りに呼び出せています。

1.と3.においては，`a` の後のスペースを消せば，意図通りの動きをするでしょう。

