
나는 내가 겪고 있는 문제를 해결하기 위해 과거에 라텍스 질문에 대한 답변을 읽어 왔습니다. 기호가 포함된 글꼴을 사용하고 있으며 기호를 라텍스 명령에 매핑하고 있습니다. 이 MWE의 경우 라틴 문자 세트에서 찾을 수 없는 기호가 있는 모든 글꼴을 사용할 수 있습니다.여기내가 사용하고 있는 것입니다(파일 이름을 Symbols.otf로 변경했습니다).여기XeLaTeX 명령을 포함한 일부 문서입니다. 이 부분은 잘 작동합니다.
\documentclass[10pt,twoside]{book}
\makeatletter
\newfontface\honourific[Path = ./fonts/]{Symbols.otf}
\newcommand{\hn}[1]{{\honourific\XeTeXglyph #1}}
\newcommand{\RahimahumuLlah}{{\large\hn{83}\kern0.25em}}
\begin{document}
...and a similar statement has been reported as being the view of Imām Mālik Ibn Anas \RahimahumuLlah.
\begin{document}
이제 조판에 사용하려고 하면 \firstcommand
작동하지만 마침표, 쉼표, 콜론, 세미콜론 또는 기타 문장 부호가 있으면 기호 뒤에 필요한 것보다 훨씬 더 많거나 훨씬 적은 공간이 있을 수 있습니다. 이것이 바로 대부분의 상황에서 잘 작동하는 기본 커닝을 0.25em으로 설정한 이유입니다. 내가 하고 싶은 것은 기호(마침표, 쉼표, 콜론...) 바로 뒤에 적용 가능한 구두점이 있는지 확인하고, 그렇다면 커닝을 적용하는 경우 0.05em을 적용하도록 설정하는 것입니다.
나는 특히 @ifnextchar 명령에 대한 몇 가지 토론을 접했습니다.이 스레드에서 시작되었던이것포럼 게시물. 나는 포럼 포스터의 최종 답변을 내 코드에 구현하려고 시도했지만 내가 발견한 것은 그것이 거짓 조건의 참인지 평가하지 않았다는 것입니다.
이 방법이나 조건부 커닝의 다른 방법을 구현하는 방법에 대해 설명을 제공할 수 있다면 크게 감사하겠습니다.
감사합니다
편집하다:
좋습니다. 몇 가지 테스트를 수행했으며 문제의 범위를 좁혔을 수 있습니다. xspace를 사용하면 작동하지 않으며 구두점을 감지하기 위해 조건문을 수동으로 실행하지도 않습니다. 이 코드를 사용하여 내 문제가 어디에 있는지 찾아보았습니다.
\makeatletter
\newcommand{\punctuationcheck}{%
\@ifnextchar){parens\relax}{%
\@ifnextchar]{square bracket\relax}{%
\@ifnextchar.{fullstop\relax}{%
\@ifnextchar,{comma\relax}{space
}%
}%
}%
}%
}
\makeatother
이 코드를 실행하면 쉼표를 감지하지 못하고 대신 공백이 실제로 쉼표 뒤에 오는지 여부에 관계없이 'space'라는 단어만 삽입합니다. 답변 잘 봤습니다여기{}
필요에 따라 공백을 보존하기 위해 이후 명령을 사용하는 것으로 나타났습니다 . 나는 이것을 시도했고 효과가있었습니다. 이제 문제는 {}
문서를 입력할 때 기억할 필요가 없도록 LaTeX에서 각 사용자 정의 명령 뒤에 a를 추가하도록 하려면 어떻게 해야 합니까?
편집 2: 해결됨
\xspace
따라서 정의에서 명령을 어디에 넣는지가 정말 중요하다는 것이 밝혀졌습니다 .
첫 번째 사례:
\newcommand{\RahimahumuLlah}{{\large\hn{83}\xspace}}
명령이 작동하는 것을 보지 못했습니다. 명령을 마지막 중괄호 바로 앞으로 옮겼습니다.
\newcommand{\RahimahumuLlah}{{\large\hn{83}}\xspace}
그리고 그것은 작동합니다.
답변1
xspace
커른 대신 일반 공백을 추가한다는 점을 제외하면 정확히 이 작업을 수행하는 패키지 코드를 복사할 수 있습니다 .