문자를 알파벳 색인과 ASCII / 유니 코드 색인으로 변환해야합니다. 그리고 가능하다면 각각의 경우를 달성 할 수있는 여러 가지 방법을 원합니다 (여러 가지가 있다는 것을 기억하기 때문입니다).
먼저 문자를 알파벳 색인으로 변환하고 싶었습니다 (기억합니다). 여기에있는 사용자 중 일부가 얼마 전에 [채팅이나 질문 중 하나에 대한 댓글 섹션에서] 변환하는 방법을 보여 주었지만 예제를 복사하지 않았고 방법을 잊어 버렸습니다. 아카이브에서 무엇이든 찾을 수 있도록]),하지만이 과정은 상당히 유사한 절차 여야하므로 ASCII / 유니 코드 관련 문자 색인을 믹스에 추가하기로 결정했습니다.
를 사용하여 a 문자를 참조하지만 작동하도록 만들 수 없거나 정확히 사용 된 용도를 기억할 수 없습니다. 곧 매뉴얼을 읽을 예정입니다. 그 동안 더 빠를 수 있으므로 질문하는 것이 합리적입니다.
감사합니다.
댓글
답변
TeXBook 내용 :
Tex 언어로 된 숫자는
"
로 시작할 수 있습니다.이 경우 8 진수 또는"
로 간주됩니다. 따라서\char"142
및\char"62
는\char98
와 동일합니다.
및
토큰
`
12 (왼쪽 따옴표), 뒤에 문자 토큰이나 이름이 단일 문자 인 제어 시퀀스 토큰이 오면 TeX의 내부 코드를 나타냅니다. 문제의 캐릭터. 예를 들어\char`b
및\char`\b
도\char98
와 동일합니다.
그리고 이러한 내부 코드는 다음과 같습니다 ( The TeXBook 의 부록 C) :
(8 진수는 기울임 꼴로, 16 진수는 타자기 글꼴로 표시) 이는 ASCII 표와 동일합니다.
Tex의 경우 모든 98
, "142
, "62
및 `b
는 유효하며 동일한 번호를 나타냅니다. .
TeXBook 은 또한 \number
프리미티브가하는 일을 알려줍니다.
\number
. TeX가\number
를 확장하면 뒤에 오는 숫자를 읽습니다 (가는대로 토큰 확장). 최종 확장은 음수 인 경우 “-
“가 앞에 오는 해당 숫자의 십진수 표현으로 구성됩니다.
둘 다 추가하고 원하는 것을 가질 수 있습니다! \number`b
에서 \number
는 숫자 `b
를 읽고 10 진수 표현 인 98
는 b
의 ASCII 코드입니다.
이러한 문자의 알파벳 색인을 원하는 경우 다음을 수행 할 수 있습니다. siracusa가 제안한대로 a
(또는 대문자를 처리하는 경우 A
의 색인에서 뺍니다) :
\the\numexpr`z-`a+1\relax % prints 26
(`a-`a
는 0이되므로 1을 추가해야합니다). 여기서 \numexpr
는 `z
및 `a
가 숫자라는 것을 이미 알고 있기 때문에 번호가 필요하지 않습니다. ; \numexpr
를 확장하려면 \the
가 필요합니다.
유니 코드 문자도 마찬가지입니다. \number`₢
(임의로 선택됨)는 유니 코드 포인트 U + 20A2의 십진수 표현 인 8354를 인쇄합니다. 물론이를 사용하려면 XeTeX 또는 LuaTeX가 필요합니다.
댓글
- 명예 :
\lccode
및\uccode
. - @ bp2017 예, 이것들도 작동 할 수 있습니다. 그러나 ' t는
\lccode`b=`a
를 설정 한 다음\the\lccode`b
는 98이 아니라 97입니다. 또한\lccode`b
는 (일반적으로)\lccode`B
와 같지만\number`b
및\number`B
는 다릅니다. 또한\lccode
문자가 아닌 문자 (예 :\lccode`!
)는 ASCII 색인이 아니라 0입니다.\uccode
도 마찬가지입니다. - '도
\@arabic
있습니다. ( CHAR로 문자를 취하고 숫자로 확장 할 수 있습니다.) - @ bp2017
\@arabic{<stuff>}
가\number <stuff>
. 그리고 TeX의 경우`CHAR
는 문자가 아니라 ' (1처럼 보이지만) 숫자 입니다. '\number
(및\@arabic
)가 작동하는 이유입니다.
<backtick><character>
lett의 문자 코드를 가져옵니다. 어. 알파벳 색인의 경우a
(또는 각각A
)의 색인을 빼면됩니다.