두 가지 색상으로 한 단어를 쓰는 방법?

Aug 17 2020

한 단어가 있는데 두 가지 색상으로 쓰고 싶습니다. 일반적으로 두 \textcolo섹션 사이에 공백이 있습니다.

\textcolor{sectcol}{la}\textcolor{white}{tex}

음수로 공간을 "제거"할 수 있습니다 \hspace.

\textcolor{sectcol}{la}\hspace{-1mm}\textcolor{white}{tex}

이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

3 UlrikeFischer Aug 17 2020 at 16:54

색상 삽입 소위 whatits, 이것은 커닝을 방지합니다.

\documentclass{article}
\usepackage{color}

\begin{document}
VA

\textcolor{red}{V}\textcolor{blue}{A}
\end{document}

그것에 대해 할 수있는 일이 많지 않습니다 (음수 공백 삽입을 제외하고). 이를 실제로 피하는 유일한 방법은 lualatex 엔진과 luacolor 패키지를 사용하는 것입니다.

\documentclass{article}
\usepackage{luacolor}

\begin{document}
VA

\textcolor{red}{V}\textcolor{blue}{A}
\end{document}

2 egreg Aug 17 2020 at 17:13

표준 글꼴에서 "a"와 "t"사이에 커닝이 없기 때문에 귀하의 예는 좋지 않습니다.

당신이 붙어 있다면 pdflatex및 LuaTeX을 사용할 수 없습니다, 당신은 수동으로 필요한 커닝을 계산할 수 있습니다.

\documentclass{article}
\usepackage{xcolor,xparse}

\ExplSyntaxOn

\NewDocumentCommand{\twocolors}{mmmm}
 {% #1 = color for the first part
  % #2 = first part
  % #3 = color for the second part
  % #4 = second part
  \egreg_twocolors:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\box_new:N \l__egreg_twocolors_kern_box
\box_new:N \l__egreg_twocolors_nokern_box

\cs_new_protected:Nn \egreg_twocolors:nnnn
 {
  \hbox_set:Nn \l__egreg_twocolors_kern_box
   {
    \tl_item:nn { #2 } { -1 }
    \tl_item:nn { #4 } { 1 } % could just be \tl_head:n
   }
  \hbox_set:Nn \l__egreg_twocolors_nokern_box
   {
    \hbox:n { \tl_item:nn { #2 } { -1 } }
    \hbox:n { \tl_item:nn { #4 } { 1 } } % could just be \tl_head:n
   }
  \textcolor{#1}{#2}
  \skip_horizontal:n
   {
    \box_wd:N \l__egreg_twocolors_kern_box - \box_wd:N \l__egreg_twocolors_nokern_box
   }
  \textcolor{#3}{#4}
 }

\ExplSyntaxOff

\begin{document}

\twocolors{green!50!blue}{two}{red!30}{color}

twocolor

\makebox[0pt][l]{twocolor}\twocolors{green!50!blue}{two}{red!30}{color}
\makebox[0pt][l]{\twocolors{green!50!blue}{two}{red!30}{color}}twocolor

\twocolors{green!50!blue}{la}{red!30}{tex}

latex

\makebox[0pt][l]{latex}\twocolors{green!50!blue}{la}{red!30}{tex}
\makebox[0pt][l]{\twocolors{green!50!blue}{la}{red!30}{tex}}latex

\twocolors{green!50!blue}{V}{red!30}{A}

VA

\makebox[0pt][l]{VA}\twocolors{green!50!blue}{V}{red!30}{A}
\makebox[0pt][l]{\twocolors{green!50!blue}{V}{red!30}{A}}VA

\end{document}

각 예제는 색상이 새지 않는지 확인합니다. 그러나 작은 해상도에서는 래스터 러에 아티팩트가 표시 될 수 있습니다. 아래 이미지는 매우 높은 해상도로 촬영되었습니다.

제한 사항 : 첫 번째 부분의 마지막 항목이나 두 번째 부분의 첫 번째 항목이 악센트 부호가있는 문자 인 경우 중괄호 (또는 해당 항목).