矩阵用双下划线表示法,向量用单下划线表示法

矩阵用双下划线表示法,向量用单下划线表示法

这是矩阵双下划线和向量单下划线的一个相当好的解决方案:

\def\mat#1{\underline{\underline{#1}}}

\def\v#1{\underline{#1}}

但是,当一行中有多个矩阵或向量时,它就不能很好地工作了,因为它会不断地对它们进行下划线:

\mat{X}\mat{X}\mat{Y}

\v{X}\v{X}\v{Y}

在此处输入图片描述

如何让上述 kluge 将矩阵/向量元素视为单独的元素?

我理解可能必须使用不同的解决方案/宏而不是基本的\underline

答案1

我仍然认为下划线是邪恶的,而且是非常过时的符号。

无论如何,这是一个可行的解决方案。

\documentclass{article}
\usepackage{amsmath}

\makeatletter
% overline
\newcommand{\dbloverline}[1]{\overline{\dbl@overline{#1}}}
\newcommand{\dbl@overline}[1]{\mathpalette\dbl@@overline{#1}}
\newcommand{\dbl@@overline}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1\overline{#2}$}%
  \ht\z@=\dimexpr\ht\z@-2\dbl@adjust{#1}\relax
  \box\z@
  \ifx#1\scriptstyle\kern-\scriptspace\else
  \ifx#1\scriptscriptstyle\kern-\scriptspace\fi\fi
  \endgroup
}
% underline
\newcommand{\dblunderline}[1]{\@@underline{\dbl@underline{#1}}}
\newcommand{\dbl@underline}[1]{\mathpalette\dbl@@underline{#1}}
\newcommand{\dbl@@underline}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1\@@underline{#2}$}%
  \dp\z@=\dimexpr\dp\z@-2\dbl@adjust{#1}\relax
  \box\z@
  \ifx#1\scriptstyle\kern-\scriptspace\else
  \ifx#1\scriptscriptstyle\kern-\scriptspace\fi\fi
  \endgroup
}
\newcommand{\dbl@adjust}[1]{%
  \fontdimen8
  \ifx#1\displaystyle\textfont\else
  \ifx#1\textstyle\textfont\else
  \ifx#1\scriptstyle\scriptfont\else
  \scriptscriptfont\fi\fi\fi 3
}
\makeatother

% vectors and matrices
\renewcommand{\vec}[1]{{%
  \mspace{0.5mu}%
  \underline{\mspace{-0.5mu}#1_{}\kern-\scriptspace\mspace{-0.5mu}}%
  \mspace{0.5mu}%
  \mathcorr{#1}%
}}
\newcommand{\mat}[1]{{%
  \mspace{0.5mu}%
  \dblunderline{\mspace{-0.5mu}#1_{}\kern-\scriptspace\mspace{-0.5mu}}%
  \mspace{0.5mu}%
  \mathcorr{#1}%
}}
\makeatletter
\newcommand{\mathcorr}[1]{\mathpalette\math@corr{#1}}
\newcommand{\math@corr}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1#2$}\sbox2{$\m@th#1#2_{}\kern-\scriptspace$}%
  \kern\dimexpr\wd\z@-\wd\tw@\relax
  \endgroup
}
\makeatother

\begin{document}

\begin{gather*}
\mat{X}\mat{X}\mat{Y}^2
\\
\vec{X}\vec{X}\vec{f}
\\
F(\vec{v})
\\
3\vec{\mathrm{i}}+2\vec{\mathrm{j}}-\vec{\mathrm{k}}
\end{gather*}

\end{document}

在此处输入图片描述

这个想法是

  1. 删除字母后插入的斜体更正
  2. 在字母的较小部分下划线
  3. 在周围添加相同的空格
  4. 恢复斜体修正
  5. 使用更紧凑的双下划线版本

代码片段来自

https://tex.stackexchange.com/a/452094/4427

https://tex.stackexchange.com/a/71065/4427

相关内容