문자를 알파벳 색인과 ASCII / 유니 코드 색인으로 변환해야합니다. 그리고 가능하다면 각각의 경우를 달성 할 수있는 여러 가지 방법을 원합니다 (여러 가지가 있다는 것을 기억하기 때문입니다).

먼저 문자를 알파벳 색인으로 변환하고 싶었습니다 (기억합니다). 여기에있는 사용자 중 일부가 얼마 전에 [채팅이나 질문 중 하나에 대한 댓글 섹션에서] 변환하는 방법을 보여 주었지만 예제를 복사하지 않았고 방법을 잊어 버렸습니다. 아카이브에서 무엇이든 찾을 수 있도록]),하지만이 과정은 상당히 유사한 절차 여야하므로 ASCII / 유니 코드 관련 문자 색인을 믹스에 추가하기로 결정했습니다.

를 사용하여 a 문자를 참조하지만 작동하도록 만들 수 없거나 정확히 사용 된 용도를 기억할 수 없습니다. 곧 매뉴얼을 읽을 예정입니다. 그 동안 더 빠를 수 있으므로 질문하는 것이 합리적입니다.

감사합니다.

댓글

  • 구문은 <backtick><character> lett의 문자 코드를 가져옵니다. 어. 알파벳 색인의 경우 a (또는 각각 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 진수 표현 인 98b의 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)가 작동하는 이유입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다