
필요한 경우 ZWNJ(U+200C) 문자에서 줄바꿈을 해도 괜찮다는 점을 라텍스에 알리고 싶습니다. 이를 허용하려면 줄 바꿈 패턴(하이픈 넣기)을 어떻게 변경해야 합니까?
\하이픈 넣기가 작동하지 않고 입력에 ZWNJ가 포함되어 있으면 "문자가 아님..." 오류가 발생합니다.
예(xelatex로 컴파일):
\documentclass{book}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
답변1
\lccode
문자에 0과 다른 값을 할당하면 하이픈 넣기 오류를 피할 수 있습니다 .
그러면 다음과 같은 것이 작동할 수 있습니다(하지만 스크립트를 읽을 수 없기 때문에 ...).
\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200B]{XB Niloofar} %don't show hyphenchar
\lccode`^^^^200c=`^^^^200c
\hyphenation{شخصی--سازی--شده}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
ZWJN을 하이픈 문자로 설정할 수도 있습니다.
\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200C]{XB Niloofar}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
답변2
ZWNJ에서 줄 바꿈을 허용하려면 거기에 임의 항목을 추가할 수 있으므로 "순수한" WNJ 대신 \discretionary{}{}{^^^^200c}
줄 바꿈을 허용하도록 입력할 수 있습니다. 이제 전체 문서를 다시 작성하는 것은 많은 작업이 될 것이므로 ZWNJ를 활성화하고 \discretionary{}{}{^^^^200c}
대체 항목으로 할당하여 ZWNJ를 발견할 때 항상 이 시퀀스를 삽입하도록 XeTeX에 지시할 수 있습니다. 패키지 newunicodechar
를 사용하면 다음과 같은 작업이 쉬워집니다.
\usepackage{xepersian}
\usepackage{newunicodechar}
\settextfont{Shabnam.ttf}
\newunicodechar{^^^^200c}{\discretionary{}{}{^^^^200c}}
\begin{document}
\showthe\hyphenchar\font
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
(이는 하이픈 넣기와 같이 필요하지 않지만 하이픈을 삽입하고 싶지 않은 경우 TeX이 끊어지는 것을 방지하기를 원한다고 가정합니다.)
답변3
저는 귀하의 글꼴에 접근할 수 없으므로 제가 염두에 두고 있는 것을 또 다른 유니코드 문자로 보여드리겠습니다.
tokcycle
어제 출시된 새 패키지를 사용합니다 .https://www.ctan.org/pkg/tokcycle. 이와 같은 문제에서는 패키지를 LaTeX 토큰과 함께 작동하는 멋진 스트림 편집기로 생각할 수 있습니다.
여기에서는 스트림의 각 연속 토큰을 검색합니다. 지정된 유니코드 문자(여기)와 일치하면 ⁊
출력 스트림에 다른 내용을 배치합니다. 첫 번째 경우에는 (Hi Mom)
출력 스트림에 배치됩니다. 두 번째 경우에는 \-
출력 스트림에 임의 하이픈인 a를 배치합니다.
그리고 아시다시피 tokcycle
공간, 매크로 및 그룹을 적절하게 처리할 수 있을 뿐만 아니라 섹션 경계를 넘어 작업할 수도 있습니다.
\documentclass{article}
\usepackage{fontspec,tokcycle}
\setmainfont{Segoe UI Symbol}
\begin{document}
\Characterdirective{\ifx⁊#1\addcytoks{(Hi Mom)}\else\addcytoks{#1}\fi}
\tokencyclexpress vi⁊-a-viz\endtokencyclexpress
\Characterdirective{\ifx⁊#1\addcytoks{\-}\else\addcytoks{#1}\fi}
\tokencyclexpress xxxxx vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium
vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium
\section{Works across section boundaries!!}
Blah blah blah\endtokencyclexpress
\end{document}