如何将除某些命令之外的公式设置为粗体?

如何将除某些命令之外的公式设置为粗体?

我正在尝试排版稀疏矩阵:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\z}{0} % Zero entry

\begin{document}
$$
 \begin{pmatrix}
 \dot{\mathit{vx}} & \dot{\mathit{vy}} & \dot{x} & \dot{y} & F \\
 \hline \\
\z & \z & -1 & \z & \\
\z & \z & \z & -1 & \z \\
 1 & \z & \z & \z & -x \\
\z & 1  & \z & \z & -gy \\
\z & \z & \z & \z & \z 
 \end{pmatrix}
$$
\end{document}

为了提高可读性,我可以设置\z为使用浅灰色。但我还想测试不同的选项(或在幻灯片等中重复使用代码),例如将每个非零单元格设置为粗体。

除了定义一个非零命令(这可能有点繁琐)之外,有没有一种简单的方法可以将每个条目设置为粗体\z

答案1

您只能\boldmath申请\unboldmath\z

\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}

\newcommand{\z}{\mbox{\unboldmath$0$}}

\begin{document}

\[
\mbox{\boldmath
$ \begin{pmatrix}
 \dot{\mathit{vx}} & \dot{\mathit{vy}} & \dot{x} & \dot{y} & F \\
 \cmidrule(lr){1-5}
\z & \z & -1 & \z & \\
\z & \z & \z & -1 & \z \\
 1 & \z & \z & \z & -x \\
\z & 1  & \z & \z & -gy \\
\z & \z & \z & \z & \z
 \end{pmatrix}$%
}
\]
\end{document}

在此处输入图片描述

答案2

因为我们知道\z扩展为0,我们可以收集每个单元格并将其内容与进行比较0(使用字符串比较- \pdfstrcmp):

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath,collcell}

\newcommand{\z}{0} % Zero entry

\newcommand{\nonzero}[1]{\ifnum\pdfstrcmp{\z}{#1}=0 \z\else\mathbf{#1}\fi}
\newcommand{\hdr}{\multicolumn{1}{c}}

\newcolumntype{B}{>{\collectcell\nonzero}c<{\endcollectcell}}

\begin{document}

\[
  \left(\begin{array}{ *{5}{B} }
    \hdr{\dot{\mathit{vx}}} & \hdr{\dot{\mathit{vy}}} & \hdr{\dot{x}} & \hdr{\dot{y}} & \hdr{F} \\
    \hline
    \z & \z & -1 & \z &     \\
    \z & \z & \z & -1 & \z  \\
     1 & \z & \z & \z & -x  \\
    \z & 1  & \z & \z & -gy \\
    \z & \z & \z & \z & \z 
  \end{array}\right)
\]

\end{document}

由于我们需要访问列类型才能应用于\nonzero列中的每个元素,因此我们定义了一种新的列类型B并使用\left(\begin{array}...\end{array}\right)构造而不是pmatrix环境。此外,不应粗体必须在 内设置\multicolumn以避免被 格式化\nonzero。为了便于编码,我已通过 实现了这一点\hdr

相关内容