首先我要感谢mathtools
软件包维护者。
问题描述
问题是关于用声明成对的分隔符\DeclarePairedDelimiter(X)
:如果我想为分隔符着色(通过定义新命令),则将mathtools
不起作用。
梅威瑟:
% ============================================================================ %
% SETTINGS %
% ============================================================================ %
\documentclass{article}
\usepackage{xcolor} % for \textcolor command
\usepackage{mathtools} % for \DeclarePairedDelimiterX command
% Formatted paired delimiter
%
% - coloured delimiter definition
%
\newcommand{\absdelim}{\textcolor{red}{|}}
%
% - declare the paired delimiter with mathtools
%
\DeclarePairedDelimiterX{\absval}[1]{\absdelim}{\absdelim}{#1}
% ============================================================================ %
% BODY %
% ============================================================================ %
\begin{document}
This does not work:
\[
\absval*{\frac{\frac{a}{b}}{\frac{c}{d}}}
\]
This alone works:
\[
\absdelim
\]
\end{document}
编译器会抛出这个问题:Missing delimiter (. inserted).
您可以使用其他自定义命令进行测试:如果其中的分隔符\newcommand{\absdelim}
由另一个命令格式化,则编译器将不会运行。
问题
是否有格式化分隔符的技巧(也许使用<post>
\DeclarePairedDelimiterX
可选参数或使用\DeclarePairedDelimiterPPX
命令)?
祝你今天过得愉快!
答案1
您可以重新定义内部包装器(您可能还必须重新定义nostarnonscaled
包装nostarscaled
器,请参阅文档)。
\mathcolor
需要相当新的 LaTeX。
\documentclass{article}
\usepackage{xcolor} % for \textcolor command
\usepackage{mathtools} % for \DeclarePairedDelimiterX command
\newcommand{\absdelim}{|}
\DeclarePairedDelimiterX\absval[1]{\absdelim}{\absdelim}{#1}
\reDeclarePairedDelimiterInnerWrapper\absval{star}{\mathcolor{red}{#1}#2\mathcolor{green}{#3}}
\begin{document}
\[
\absval*{\frac{\frac{a}{b}}{\frac{c}{d}}}
\]
\end{document}
答案2
\left
并且\right
需要在同一组中,因此您不能这样做
{\color{red}\left|} .... {\color{red}\right|}
但你可以
{\color{red}\left| {\color{black} .... }\right|}
\documentclass{article}
\usepackage{xcolor} % for \textcolor command
\usepackage{mathtools} % for \DeclarePairedDelimiterX command
% Formatted paired delimiter
%
% - coloured delimiter definition
%
%
% - declare the paired delimiter with mathtools
%
\DeclarePairedDelimiterX{\absvalblack}[1]{|}{|}{#1}
\NewDocumentCommand\absval{sm}{%
\mathcolor{red}{%
\IfBooleanTF{#1}{\absvalblack*}{\absvalblack}{\mathcolor{black}{#2}}%
}}
% ============================================================================ %
% BODY %
% ============================================================================ %
\begin{document}
This does work:
\[
\absval*{\frac{\frac{a}{b}}{\frac{c}{d}}}
\]
\end{document}