问题
是否可以为命令编写一个条件语句,根据命令在文档中出现的位置来改变它们,但又与包titlesec
和tocloft
包完全兼容?这是原始问题的延伸。原始问题没有解决titlesec/titletoc/tocloft
我需要的三个包的问题。
示例情况
当命令出现在正文中时,它应该是
- 颜色为粗体和黑色。
当它出现在标题中(分段命令:\section \subsection, \paragraph
等)时,
- 使其加粗并呈红色。
在下面的代码中,我\keyword
在标题\section
和正文中使用了该命令。我希望根据文本所在的位置更改文本的外观。这意味着我需要访问两个条件:
- 对于任何类型的分段命令(包括 titlesec 的命令)
- 对于身体
示例代码
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{titlesec}
\usepackage{titletoc,tocloft}
\titleformat{\section}[hang]{\color{blue}\huge\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}[hang]{\color{blue}\bfseries}{\thesubsection}{1em}{}
\titlecontents{section}[0mm]{\color{gray}\large\bfseries\thecontentslabel\quad}{}{}{}
\titlecontents{subsection}[2em]{\color{gray}}{\thecontentslabel\quad}{}{\titlerule*[10pt]{.}\contentspage}
\newcommand{\keyword}[1]{\textbf{#1}}
\begin{document}
\section{Product \keyword{rabunza}}
You can find the information about \keyword{rabunza} on our website.
\end{document}
答案1
正如 Harish Kumar 在评论中所说,egreg 的解决方案在这里也可以工作。
只要将命令中的“colorkeywords”条件设置为 true 即可:
\titleformat{\section}[hang]{\colorkeywordstrue\color{blue}\huge\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}[hang]{\colorkeywordstrue\color{blue}\bfseries}{\thesubsection}{1em}{}
\titlecontents{section}[0mm]{\colorkeywordstrue\color{gray}\large\bfseries\thecontentslabel\quad}{}{}{}
\titlecontents{subsection}[2em]{\colorkeywordstrue\color{gray}}{\thecontentslabel\quad}{}{\titlerule*[10pt]{.}\contentspage}
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{titlesec}
\usepackage{titletoc,tocloft}
\newif\ifcolorkeywords
\DeclareRobustCommand{\keyword}[1]{%
\textbf{\ifcolorkeywords\color{red}\fi #1}%
}
\titleformat{\section}[hang]{\colorkeywordstrue\color{blue}\huge\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}[hang]{\colorkeywordstrue\color{blue}\bfseries}{\thesubsection}{1em}{}
\titlecontents{section}[0mm]{\colorkeywordstrue\color{gray}\large\bfseries\thecontentslabel\quad}{}{}{}
\titlecontents{subsection}[2em]{\colorkeywordstrue\color{gray}}{\thecontentslabel\quad}{}{\titlerule*[10pt]{.}\contentspage}
\begin{document}
\tableofcontents
\section{Product \keyword{rabunza}}
You can find the information about \keyword{rabunza} on our website.
\end{document}
输出