Minun täytyy muuntaa kirjain sen aakkoshakemistoksi ja sen ASCII / Unicode-hakemistoksi. Ja haluaisin saada useamman kuin yhden tavan saavuttaa jokainen tapaus (koska muistan, että on enemmän kuin yksi), jos mahdollista.
Halusin ensin muuntaa kirje sen aakkoseksi (muistan jotkut täällä olevat käyttäjät osoittivat minulle, kuinka muunnos tehdään jonkin aikaa sitten [joko chatissa tai kommenttiosassa johonkin kysymyksiin], mutta en kopioinut esimerkkejä ja unohdin miten se tehdään [en voi tuntua löytää jotain arkistosta]), mutta sitten päätin lisätä sekoitukseen kirjaimen ASCII- / Unicode-indeksin, koska tämän on oltava melko samanlainen menettely.
Muistan jotain "\a
viitataksesi merkkiin a , mutta ei näytä saavan sitä toimimaan tai muistamaan tarkalleen mihin sitä käytetään. Luen käyttöoppaita pian, mutta sillä välin oli järkevää esittää kysymys, koska se voi olla nopeampi.
Kiitos.
Kommentit
vastaus
TeXBook sanoo:
Numero TeX-kielellä voi alkaa
"
-merkillä, jolloin sitä pidetään oktaalina, tai"
-merkillä, kun sitä pidetään heksadesimaalina, siis\char"142
ja\char"62
vastaavat\char98
.
ja
Tunnus
`
12 (vasen lainaus), jota seuraa jokin merkkitunnus tai mikä tahansa ohjaussekvenssitunnus, jonka nimi on yksi merkki, tarkoittaa TeX: n sisäistä koodia kyseinen hahmo. Esimerkiksi\char`b
ja\char`\b
vastaavat myös\char98
.
Ja nämä sisäiset koodit ovat ( TeXBook in liitteestä C):
(oktaaliluvut on esitetty kursiivilla ja heksadesimaaliluvut kirjoituskonefontilla), joka on sama kuin ASCII-taulukko.
Joten TeX: lle kaikki 98
, "142
, "62
ja `b
ovat kelvollisia ja edustavat samaa numeroa .
TeXBook kertoo myös, mitä primitiivinen \number
tekee:
\number
. Kun TeX laajenee\number
, se lukee seuraavan numeron (laajentaa tunnuksia sen myötä); lopullinen laajennus koostuu luvun desimaaliluvusta, jota edeltää ”-
” jos negatiivinen.
Joten voit lisätä molemmat ja saada mitä haluat! Kohdassa \number`b
\number
lukee luvun `b
ja laajenee desimaaliedustukseensa 98
, joka on ASCII-koodi koodille b
.
Jos haluat tällaisen kirjaimen aakkosellisen hakemiston, voit tehdä sen kuten siracusa ehdotti ja vähennä hakemistosta a
(tai A
, jos kyseessä on isot kirjaimet):
\the\numexpr`z-`a+1\relax % prints 26
(sinun on lisättävä 1, koska `a-`a
johtaisi nollaan). Täällä ei tarvita numeroa, koska \numexpr
tietää jo, että `z
ja `a
ovat numeroita ; tarvitset vain \the
laajentaaksesi \numexpr
.
Sama pätee Unicode-merkkeihin. \number`₢
(valittu satunnaisesti) tulostaa 8354, joka on unicode-pisteen U + 20A2 desimaaliluku. Niiden käyttämiseen tarvitaan tietysti XeTeX tai LuaTeX.
Kommentit
- Kunniamaininta:
\lccode
ja\uccode
. - @ bp2017 Kyllä, myös ne voivat toimia. Huomaa kuitenkin, että voit (mutta ei ' t, ilmeisesti) asettaa
\lccode`b=`a
ja sitten\the\lccode`b
on 97, ei 98. Myös\lccode`b
on (yleensä) yhtä suuri kuin\lccode`B
, kun taas\number`b
ja\number`B
ovat erilaisia. Myös\lccode
ei-kirjainmerkit (esimerkiksi\lccode`!
) on nolla, ei ASCII-indeksi. Sama koskee\uccode
. - Siellä ' on myös
\@arabic
. (Se voi viedä kirjaimen CHAR-muodossa ja laajentaa numeroksi.) - @ bp2017 Kyllä, koska
\@arabic{<stuff>}
laajenee muotoon\number <stuff>
. Ja TeX: lle`CHAR
ei ole ' t kirjainta (vaikka se näyttää yhdeltä), mutta numero . Että ' s miksi\number
(ja\@arabic
) toimii.
<backtick><character>
saadaksesi lettin merkkikoodin er. Aakkoshakemistolle voit vain vähentääa
(taiA
) hakemiston.