我修改了我的 tex 文件,所以我正在寻找一个 textbf 灰色。现在,新创建的命令不会在文档末尾换行。(与 \colorbox{}{} 存在同样的问题)
我发现了这个:(来自:使用 \textbf{} 时更改一般颜色)
- \let\oldtextbf\textbf \renewcommand{\textbf}[1]{
\textcolor{gray}{\oldtextbf{#1}} }
但在数学模式上出现了问题,因为我做了很多这样的事情:$ \textbf{something} $
我的 tex 代码非常大,所以我不想改成这样:$ \text{ \textbf{something} } $
所以我改变了上面的新命令,并解决了之前的问题:
- \let\oldtextbf\textbf \renewcommand{\textbf}[1]{ \text{ \textcolor{gray}{\oldtextbf{#1}} } }
我的(真正)问题是:现在,新的 \textbf{} 命令在到达文档末尾时不会“断行”,因此行会超出文档范围。
为什么?我漏掉了什么参数?有没有办法指定一个断行的命令?
(抱歉我的英语不好,我稍后会编辑文本)
答案1
字体命令有钩子。例如,要将某些内容加粗,可以使用bfseries
钩子:
\documentclass{article}
\usepackage{xcolor}
\AddToHook{bfseries}{\color{gray}}
\begin{document}
This is some very long text that should hit the end of the line \textbf{but in
gray and bold and very elegant} no longer gray.
$\textbf{Example}$. no longer gray
\end{document}
答案2
您不需要无条件地将内容装箱,而是\text
可以检查是否处于数学模式,\mathcolor
如果是,则使用\textcolor
。
\documentclass{article}
\usepackage{xcolor}
\NewCommandCopy\oldtextbf\textbf
\renewcommand\textbf[1]{\relax\ifmmode\mathcolor{gray}{\oldtextbf{#1}}\else\textcolor{gray}{\oldtextbf{#1}}\fi}
\begin{document}
This is some very long text that should hit the end of the line \textbf{but in
gray and bold and very elegant}.
$\textbf{Example}$.
\end{document}