文字をアルファベットのインデックスとASCII / Unicodeインデックスに変換する必要があります。そして、可能であれば、それぞれのケースを達成するための複数の方法が必要です(複数あることを覚えているため)。
最初に、文字をアルファベットのインデックスに変換したかった(覚えています)ここのユーザーの何人かは、しばらく前に[チャットまたは質問の1つへのコメントセクションで]変換の方法を教えてくれましたが、例をコピーせず、その方法を忘れました[できないようです]アーカイブで何かを見つけるために])、しかし、これは非常によく似た手順でなければならないので、文字のASCII / Unicode関連のインデックスをミックスに追加することにしました。
は文字 a を参照しますが、それを機能させることも、使用目的を正確に覚えることもできないようです。まもなくマニュアルを読みますが、その間、質問する方が速いかもしれないので、質問するのは理にかなっています。
ありがとうございます。
コメント
回答
TeXBook の内容:
TeXの言語の数値は、
"
で始めることができます。この場合、8進数、または"
と見なされます。 16進数と見なされる場合。したがって、\char"142
および\char"62
は\char98
と同等です。
および
トークン
`
12 (左の引用符)の後に任意の文字トークンまたは名前が1文字の制御シーケンストークンが続く場合、TeXの内部コードは問題のキャラクター。たとえば、\char`b
と\char`\b
も\char98
と同等です。
これらの内部コードは( The TeXBook の付録Cから):
(8進数はイタリックで、16進数はタイプライターフォントで表されます)これはASCIIテーブルと同じです。
したがって、TeXの場合はすべての98
、"142
、"62
、および`b
は有効であり、同じ番号を表します。
TeXBook は、\number
プリミティブの機能も示しています。
\number
。 TeXが\number
を展開すると、次の番号が読み取られます(トークンが進むにつれて展開されます)。最終的な展開は、その数値の10進表現で構成され、負の場合は「-
」が前に付きます。
つまり、両方を追加して、必要なものを手に入れることができます。 \number`b
で、\number
は数値`b
を読み取り、その小数表現
、これはb
のASCIIコードです。
このような文字のアルファベット順のインデックスが必要な場合は、次のことができます。 siracusaが提案したように、a
(大文字を扱う場合はA
)のインデックスから減算します:
\the\numexpr`z-`a+1\relax % prints 26
(`a-`a
はゼロになるため、1を追加する必要があります)。 \numexpr
は、`z
と`a
が番号であることをすでに知っているため、ここでは番号は必要ありません。 ; \numexpr
を展開するには\the
が必要です。
同じことがUnicode文字にも当てはまります。\number`₢
(ランダムに選択)は、UnicodeポイントU + 20A2の10進表現である8354を出力します。もちろん、これらを使用するにはXeTeXまたはLuaTeXが必要です。
コメント
- 佳作:
\lccode
および\uccode
。 - @ bp2017はい、それらも機能します。ただし、
\lccode`b=`a
を設定してからivを設定することはできます(ただし、明らかにすべきではありません' t)。 id = “2ea0190dcd”>
は98ではなく97になります。また、\lccode`b
は(通常)\lccode`B
と同じですが、\number`b
と\number`B
は異なります。また、\lccode
文字以外の文字(\lccode`!
など)はゼロであり、ASCIIインデックスではありません。 \uccode
についても同じことが言えます。
\@arabic
あります。 (「CHAR」のように文字を取り、数字に展開できます。)\@arabic{<stuff>}
が\number <stuff>
。 また、TeXの場合、`CHAR
は'文字ではなく(1つのように見えますが)、番号です。 そのため、' \number
(および\@arabic
)が機能します。
<backtick><character>
でlettの文字コードを取得しますえー。アルファベットのインデックスの場合、a
(またはそれぞれA
)のインデックスを引くだけです。