更改节标题和文本的颜色直到下一节

更改节标题和文本的颜色直到下一节

对于文章类型书籍的较大写作项目,我想用不同的颜色为某些章节、小节和小小节的标题和文本着色。

  • 普通文本通常为黑色(命令部分、小节、小节)
  • 我最近写的文字和标题应该是红色的(例如通过新命令sectionNew,subsectionNew,...)
  • 已经多次更正并得到母语人士认可的文本和标题我想以绿色显示(例如 sectionFinished、subsectionFinshed 等)

我可以像这样定义新部分的命令

\newcommand\sectionNew[1]{\section{\color{red}#1}\color{red}}
\newcommand\subsectionNew[1]{\subsection{\color{red}#1}\color{red}}
...

\newcommand\sectionFinished[1]{\color{green}\section{#1}\color{green}}
...

获得我想要的行为的一种方法是在我定义的 section[New|Finished] 命令和以下文本周围添加 { 和 }。

{
 \sectionNew{Heading1}
     Lorem ipsum.
}

但是,如果可能的话,我想避免这种情况,因为在我看来,花括号会使 LaTeX 文件中的文本更难读。

如果没有花括号,上述问题就是所有后续没有明确定义的部分也会被涂成红色或绿色(直到遇到另一个明确的颜色语句)。我认为也许更新部分命令并明确将黑色定义为颜色可能是解决方案。不幸的是,我无法弄清楚如何以通用方式更新部分命令(接管文档类型中的所有内容,除了明确的颜色语句)。

有没有什么办法可以解决这个问题?

或者也许有一个包可以为我做到这一点(即乳胶文档中的一种文本管理/版本控制)?

更新:这样做的一个缺点是,不再可能使用页面标题的替代标题(\section[标题的替代标题]{普通标题})。

答案1

您可以使用环境而不是命令进行分段:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{xcolor}
\usepackage{blindtext}
\newenvironment{sectionNew}[1]
  {\section[#1]{\textcolor{red}{#1}}\color{red}}
  {\normalcolor}
\newenvironment{subsectionNew}[1]
  {\subsection[#1]{\textcolor{red}{#1}}\color{red}}
  {\normalcolor}
\newenvironment{sectionFinished}[1]
  {\section[#1]{\textcolor{green}{#1}}\color{green}}
  {\normalcolor}
\let\endsection\relax
\let\endsubsection\relax

\begin{document}

\tableofcontents

\begin{sectionNew}{Foo}
\blindtext
\end{sectionNew}

\begin{section}{Bar}
\blindtext
\end{section}

\begin{subsectionNew}{Baz}
    \blindtext
\end{subsectionNew}

\begin{sectionFinished}{Foobar}
\blindtext
\end{sectionFinished}

\end{document}

enter image description here

答案2

经过一番尝试后,我想我找到了解决方案:

\let\sectionOrig\section
\renewcommand\section[1]{\color{black}\sectionOrig{#1}}
....

不幸的是,说服章节以类似的方式工作有点复杂,但可以像这样实现(解决方案来自这里):

\let\chapterOrig\chapter
\renewcommand*\chapter{\color{black}\@ifstar{\starchapter}{\@dblarg\nostarchapter}}
\newcommand*\starchapter[1]{\chapterOrig*{#1}}
\def\nostarchapter[#1]#2{\chapterOrig[{#1}]{#2}}

唯一可以改进的是章节编号,因为它不会改变颜色。不过,这不会影响我的情况的功能,我可以接受。

相关内容