เกิดขึ้นกับ 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}