嵌套矩阵;切换数学字体时内部矩阵太高

嵌套矩阵;切换数学字体时内部矩阵太高

我已经使用过这个答案https://tex.stackexchange.com/a/61290/46626调整我的矩阵,它可以与标准字体(拉丁现代数学)配合使用

矩阵校正

但是当我使用 Cambria Math 时,内部矩阵似乎太高了:

在此处输入图片描述

我无法解决这个问题,有人知道吗?是否可以将其用作标准矩阵样式?我正在使用 TeX Live 2016 和 LuaLaTeX。也欢迎提供其他解决方案来正确设置此矩阵。谢谢!

梅威瑟:

\documentclass{article}

\usepackage{fontspec}
\usepackage{mathtools} % includes: \usepackage{amsmath} (-> needed e.g. for bmatrix) !! load BEFORE \usepackage{unicode-math}
\usepackage{unicode-math}   %Unicode mathematics support for X∃TEX and LuaTEX

%% Set font 
%\setromanfont{Cambria}
%\setsansfont{Calibri}
%\setmonofont{Consolas}
%\setmathfont{Cambria Math}

\makeatletter
\newif\ifcenter@asb@\center@asb@false
\def\center@arstrutbox{%
\setbox\@arstrutbox\hbox{$\vcenter{\box\@arstrutbox}$}%
}
\newcommand*{\CenteredArraystretch}[1]{%
\ifcenter@asb@\else
  \pretocmd{\@mkpream}{\center@arstrutbox}{}{}%
  \center@asb@true
\fi
\renewcommand{\arraystretch}{#1}%
}
\makeatother

\begin{document}

\begin{equation} 
\CenteredArraystretch{1.2}     
\delimitershortfall=-2pt %\renewcommand*{\arraystretch}{1.2} %Default is 1.0
\begin{split}
\begin{bmatrix}
    \begin{bmatrix}
        m & 0\\
        0 & m
        \end{bmatrix}&
        -m\, \mathbfit{A}^{RL}
    \begin{bmatrix}
        \phantom{-}y^L_{P_{\mathrm{COG}}O_L}\\
        -x^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix}\\
    -m
    \begin{bmatrix}
        y^L_{P_{\mathrm{COG}}O_L} & -x^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix}
    \mathbfit{A}^{LR}&
    J^L + m\left(\left(x^L_{P_{\mathrm{COG}}O_L}\right)^2 + 
                 \left(y^L_{P_{\mathrm{COG}}O_L}\right)^2
           \right)
\end{bmatrix}
\begin{bmatrix}
    \begin{bmatrix}
    \ddot{x}^R_{O_LO_R}\\
    \ddot{y}^R_{O_LO_R}
    \end{bmatrix}\\%[2ex]
    \ddot{\psi}
\end{bmatrix} = \\
\begin{bmatrix}
\sum
    \begin{bmatrix}
       F^R_{ix}\\
       F^R_{iy}
    \end{bmatrix}\\
    \sum M^L_{iz}+\sum 
    \begin{bmatrix}
       -y^L_{PiP} & 
        x^L_{PiP}
    \end{bmatrix}
    \begin{bmatrix}
       F^L_{ix}\\
       F^L_{iy}
    \end{bmatrix}
\end{bmatrix}
+
\begin{bmatrix}
m\,\mathbfit{A}^{RL}
    \begin{bmatrix}
       x^L_{P_{\mathrm{COG}}O_L}\\
       y^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix}
\dot{\psi}^2\\%[2ex]
0
\end{bmatrix}   
\end{split}
\end{equation}

\end{document}

更新: 使用 Mico 的答案,我(几乎)找到了所需的结果。但它需要大量的手动调整,我想知道是否有更简单的解决方案?

\documentclass{article}

\usepackage{fontspec}
\usepackage{mathtools} % includes: \usepackage{amsmath} (-> needed e.g. for bmatrix) !! load BEFORE \usepackage{unicode-math}
\usepackage{unicode-math}   %Unicode mathematics support for X∃TEX and LuaTEX

% Set font 
\setmainfont{Cambria}
\setmathfont{Cambria Math}
\setsansfont{Calibri}
\setmonofont{Consolas}


\begin{document}
\begin{multline} 
\delimitershortfall=-2pt \renewcommand{\arraystretch}{1.33} 
\begin{bmatrix}
\delimitershortfall=5pt
    \begin{bmatrix} 
        m & 0\\
        0 & m
    \end{bmatrix} &
    -m\, \mathbfit{A}^{RL}
    \delimitershortfall=5pt
    \begin{bmatrix}
        \phantom{-}y^L_{P_{\mathrm{COG}}O_L} \\
                  -x^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix} \\[3ex]
    -m \begin{bmatrix}
         y^L_{P_{\mathrm{COG}}O_L} & 
        -x^L_{P_{\mathrm{COG}}O_L}
       \end{bmatrix}
    \mathbfit{A}^{LR} &
    J^L + m\bigl(
              (x^L_{P_{\mathrm{COG}}O_L})^2 + 
              (y^L_{P_{\mathrm{COG}}O_L})^2 
           \bigr)
\end{bmatrix}\,
\begin{bmatrix}
\delimitershortfall=5pt
    \begin{bmatrix}
      \ddot{x}^R_{O_LO_R}\\
      \ddot{y}^R_{O_LO_R}
    \end{bmatrix} \\[3.25ex]
    \ddot{\psi}
\end{bmatrix} \\[2ex]  % end of first row
\delimitershortfall=-2pt
=\begin{bmatrix}
\sum\limits_{i} \begin{bmatrix}
        F^R_{ix} \\[0.5ex]
        F^R_{iy}
     \end{bmatrix}\\
\sum\limits_{i} M^L_{iz}+
\sum\limits_{i} \begin{bmatrix}
        -y^L_{PiP} & x^L_{PiP}
     \end{bmatrix}
     \begin{bmatrix}
        F^L_{ix} \\[0.5ex] F^L_{iy}
     \end{bmatrix}
\end{bmatrix}
+
\begin{bmatrix}
m\,\mathbfit{A}^{RL}
    \begin{bmatrix}
        x^L_{P_{\mathrm{COG}}O_L} \\[0.5ex]
        y^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix}
\dot{\psi}^2 \\[4.5ex]
0
\end{bmatrix}   
\end{multline}
\end{document}

新的解决方案

答案1

(使用 TeXLive2018 中的 LuaLaTeX 进行测试。注意:LuaTeXunicode-math在 TeXLive2016 和 TeXLive2018 之间有了很大的发展。如果可行的话,请考虑更新到 TeXLive2018。)

我认为没有必要更改\delimitershortfall,这是一个非常低级的参数。相反,更改 的值\arraystretch并根据需要添加一些额外的垂直间距指令。由于行间没有明显的对齐点,我会使用 环境multline而不是嵌套的方程式/拆分环境。此外,无需使用\left\right来自动调整某些括号的大小。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
% Set fonts 
\usepackage{unicode-math} 
\setmainfont{Cambria}
\setmathfont{Cambria Math}
\setsansfont{Calibri}
\setmonofont{Consolas}

\begin{document}

\begin{multline} 
\renewcommand{\arraystretch}{1.33} 
\begin{bmatrix}
    \begin{bmatrix} 
        m & 0\\
        0 & m
    \end{bmatrix} &
    -m\, \mathbfit{A}^{RL}
    \begin{bmatrix}
        \phantom{-}y^L_{P_{\mathrm{COG}}O_L} \\
                  -x^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix} \\[3ex]
    -m \begin{bmatrix}
         y^L_{P_{\mathrm{COG}}O_L} & 
        -x^L_{P_{\mathrm{COG}}O_L}
       \end{bmatrix}
    \mathbfit{A}^{LR} &
    J^L + m\bigl(
              (x^L_{P_{\mathrm{COG}}O_L})^2 + 
              (y^L_{P_{\mathrm{COG}}O_L})^2 
           \bigr)
\end{bmatrix}\,
\begin{bmatrix}
    \begin{bmatrix}
      \ddot{x}^R_{O_LO_R}\\
      \ddot{y}^R_{O_LO_R}
    \end{bmatrix} \\[3.25ex]
    \ddot{\psi}
\end{bmatrix} \\[2ex]  % end of first row
=\begin{bmatrix}
\sum \begin{bmatrix}
        F^R_{ix} \\[0.5ex]
        F^R_{iy}
     \end{bmatrix}\\
\sum M^L_{iz}+
\sum \begin{bmatrix}
        -y^L_{PiP} & x^L_{PiP}
     \end{bmatrix}
     \begin{bmatrix}
        F^L_{ix} \\[0.5ex] F^L_{iy}
     \end{bmatrix}
\end{bmatrix}
+
\begin{bmatrix}
m\,\mathbfit{A}^{RL}
    \begin{bmatrix}
        x^L_{P_{\mathrm{COG}}O_L} \\[0.5ex]
        y^L_{P_{\mathrm{COG}}O_L}
    \end{bmatrix}
\dot{\psi}^2 \\[4.5ex]
0
\end{bmatrix}   
\end{multline}

\end{document}

相关内容