본문 텍스트와 동일한 색상을 가정하는 섹션 텍스트 관련 문제

본문 텍스트와 동일한 색상을 가정하는 섹션 텍스트 관련 문제

섹션 헤더가 섹션의 첫 번째 단어 색상을 가정하는 동작을 이해하려고 합니다.

내 MWE는 다음과 같습니다.

\documentclass{minimal}    
\usepackage{xcolor}    
\makeatletter
\newcommand\section{\@startsection{section}{1}{.25in}%
                                    {1.3ex \@plus .5ex \@minus .2ex}%
                                    {-.5em \@plus -.1em}%
                  {\reset@font\normalsize\bfseries}}
\makeatother    
\begin{document}
\section{First}
{\color{red} Hello there} More text
\end{document}

원하는 결과는 "Hello there"가 빨간색이 되고 나머지 텍스트("First" 포함)는 검정색이 되는 것입니다. 그러나 "첫 번째"는 빨간색입니다. "{\color" 앞에 단어가 삽입되면 원하는 동작이 발생합니다. 여기서 무슨 일이 일어나고 있는 걸까요? 대답은 라텍스에 관해 내가 모르는 몇 가지 기본적인 사실임에 틀림없습니다.

미리 감사드립니다.

답변1

먼저 문제가 의 정의와 관련이 없다고 가정하겠습니다 \section. 따라서 문제는 여기에 있는 것이 \color{red}... 아니라 \textcolor{red}{...}.

다음은 문제를 복제하는 MWE입니다.

\documentclass{article}    
\usepackage{color}    

\begin{document}
\paragraph{Foo}
{\color{red}Bar} bla bla
\end{document}

왜?

의 다섯 번째 인수가 \@startsection부정인 경우 제목은 명령과 함께 다음 텍스트의 단락 앞에 추가됩니다 \everypar. 명령은 \everypar수평 모드에서 실행됩니다. 즉, TeX가 Hello에서 문자 H를 볼 때, 이 순간은 너무 늦어서 색상 변경이 이미 완료되었습니다. 여기 또 다른 예가 있습니다

\documentclass{article}    
\usepackage{color}    

\begin{document}
\everypar{Foo \everypar{}}
{\color{red}\ifvmode\hrule\vskip1cm\fi Bar} bla bla
\end{document}

해결책은 \textcolor{red}{...}또는 를 사용하는 것입니다 \leavevmode{\color{red}...}.

관련 정보