xcolor로 커닝

Oct 17 2020

변형에서 내 질문은 여기에서 여러 번 물었지만 문제를 해결할 수 없습니다.
를 사용하면 \textcolor{FirstLetter}SecondAndOtherLettersOfWord첫 번째와 두 번째 글자 사이의 글꼴 커닝이 손실됩니다.
함께 \showoutput로그에 우리가 \special{color push rgb 1 0 0}\special{color pop}지침을 제공합니다. 이 경우 (이전 답변에서)
결합 \bgroup, \egroup등이 어떻게 필요합니까 (일반적인 텍스트, 종종 단어의 첫 글자 만 채색)?

XeLateX . luacolor 및 LuaLatex를 사용할 수 없습니다.

MWE :

\documentclass{article}
\usepackage{polyglossia}
\usepackage{xcolor}
\begin{document}
\textcolor{red}{V}AR

VAR
\end{document}

답변

5 egreg Oct 17 2020 at 16:20

단어 부분 사이의 커닝을 측정합니다. 색칠하기 전에 무언가에 대한 지원도 추가했습니다.

\documentclass{article}
\usepackage{xcolor}

\newcommand{\kerncolor}[4]{%
  % #1 = color, #2 = before, #3 = colored part, #4 = after
  \sbox0{#2#3}\sbox2{\mbox{#2}\mbox{#3}}%
  \dimen0=\dimexpr\wd0-\wd2\relax
  \sbox0{#3#4}\sbox2{\mbox{#3}\mbox{#4}}%
  \dimen2=\dimexpr\wd0-\wd2\relax
  #2\kern\dimen0 \textcolor{#1}{#3}\kern\dimen2 #4%
}

\begin{document}

\kerncolor{red}{}{V}{AR}

VAR

\sbox0{\kerncolor{red}{}{V}{AR}}\the\wd0

\sbox0{VAR}\the\wd0

\itshape

\kerncolor{red}{}{V}{AR}

VAR

\sbox0{\kerncolor{red}{}{V}{AR}}\the\wd0

\sbox0{VAR}\the\wd0

\end{document}