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

  • Syntaksi on <backtick><character> saadaksesi lettin merkkikoodin er. Aakkoshakemistolle voit vain vähentää a (tai A) hakemiston.

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):

kirjoita kuvan kuvaus tähän

(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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *