대문자/대문자의 글꼴이 다릅니다.

대문자/대문자의 글꼴이 다릅니다.

텍스트에 대문자/대문자가 나타날 때마다 다른 글꼴을 사용할 수 있습니까?

따라서 "이것은 일부 텍스트입니다."라는 문장이 있는 경우 첫 번째 T가 나머지 텍스트와 다른 글꼴이기를 바랍니다.

"이것은 GMT에 약어가 있는 텍스트입니다"라는 문장이 있는 경우 첫 번째 T와 GMT가 나머지 글꼴과 다른 글꼴이기를 바랍니다.

마찬가지로 "이것은 적절한 이름이 포함된 텍스트입니다: London"의 경우 첫 번째 T와 L이 다른 글꼴이 되기를 바랍니다.

제가 원하는 효과 유형의 스크린샷을 공유하고 있습니다.여기에 이미지 설명을 입력하세요

전체 문서(아마도 여러 장)에 대해 이 작업을 수행해야 합니다. 그래서 저는 각 문자를 개별적으로 변경할 필요 없이 이 작업을 자동으로 수행할 수 있는 방법을 찾고 싶습니다.

답변1

XeLaTeX로 컴파일할 때 메커니즘을 사용할 수 있습니다 \XeTeXinterchartoks.

아이디어는 16진수 문자 코드 0041(A) ~ 005A(Z)를 갖는 라틴 대문자로 구성된 문자 클래스를 정의하는 것입니다.

그런 다음 다른 모든 캐릭터에서 이 새 클래스로의 전환을 정의합니다. 다른 문자의 단어 경계 클래스는 0 또는 4095입니다. 이 전환에서는 \cal다음 대문자를 인수로 삽입할 수 있습니다. 내가 올바르게 이해했다면 이 매크로를 삽입하면 첫 번째 문자 뒤에 더 많은 대문자가 있으면 다른 전환이 트리거되므로 후속 문자도 의 인수로 표시됩니다 \cal.

MWE는 주로 다음을 기반으로 합니다.XeLaTeX: 라틴어가 아닌 텍스트 내에서 라틴어 텍스트에 대해 다른 글꼴 모음을 지정하는 방법은 무엇입니까?그리고Xelatex 기본 글꼴의 자릿수 크기 변경:

\documentclass{article}

\XeTeXinterchartokenstate = 1\relax
\newXeTeXintercharclass\ucletterclass
\ExplSyntaxOn
\int_step_inline:nnnn {"0041}{1}{"005A}
 { \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}

\XeTeXinterchartoks 0 \ucletterclass = {\mycal}
\XeTeXinterchartoks 4095 \ucletterclass = {\mycal}

\begin{document}
This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London
\end{document}

결과:

여기에 이미지 설명을 입력하세요

\XeTeXinterchartokenstate = 0\relax어딘가에 변경되지 않은 대문자가 필요한 경우 전환 메커니즘을 일시적으로 끌 수 있습니다 .

답변2

다른 사람에게 도움이 될 수 있도록 내 코드/솔루션을 공유하고 있습니다. 이것은 Marijn의 답변과 해당 게시물의 링크를 기반으로 합니다.

\documentclass[a4paper,11pt]{book}

\usepackage[default]{frcursive}



\XeTeXinterchartokenstate = 1\relax  
\newXeTeXintercharclass\ucletterclass  
\ExplSyntaxOn   
\int_step_inline:nnnn {"0041}{1}{"005A}
 { \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}


\XeTeXinterchartoks 0 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 0 = {\endgroup}
\XeTeXinterchartoks 4095 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 4095= {\endgroup}


\begin{document}


This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London


\end{document}


결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보