对于文章类型书籍的较大写作项目,我想用不同的颜色为某些章节、小节和小小节的标题和文本着色。
- 普通文本通常为黑色(命令部分、小节、小节)
- 我最近写的文字和标题应该是红色的(例如通过新命令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}
答案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}}
唯一可以改进的是章节编号,因为它不会改变颜色。不过,这不会影响我的情况的功能,我可以接受。