
섹션 헤더가 섹션의 첫 번째 단어 색상을 가정하는 동작을 이해하려고 합니다.
내 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}...}
.