flalign 中的间距受到 mathpazo 的影响

flalign 中的间距受到 mathpazo 的影响

我得到了以下(部分缩短的)方程式:

对齐

我想去掉等式左侧的空间(的左边Q'),以便标签(0.2)适合放在右侧。

\documentclass[
    a4paper,
    12pt,
    parskip=half
]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{amsmath}

\newcommand*{\op}[1]{\mathrm{#1}}

\begin{document}
\begin{align}
    Q'&(s,x) \nonumber\\
    &\mid s=(f,r)() \wedge x=\mathcal{E}(r) &&= [\mathcal{E}(f())]\\
    &\mid s=(f,r)(q_1,...,q_z) &&= \left[\mathcal{E}(f(p_1,...,p_z)) \middle\vert
            \begin{aligned}
              &x' = \op{split}(x,r(q_1,...,q_z)),\\
                &(x_1,...,x_z) \in x',\\
                &p_i \in Q'(q_i,x_i),1 \leq i \leq z
            \end{aligned}
            \right]
\end{align}
\end{document}

使用flalign

对齐

使用flalign\usepackage{mathpazo}

flalign+mathpazo

\documentclass[
    a4paper,
    12pt,
    parskip=half,
]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{amsmath}
\usepackage{mathpazo}

\newcommand*{\op}[1]{\mathrm{#1}}

\begin{document}
\begin{flalign}
Q'&(s,x) \nonumber\\
&\mid s=(f,r)() \wedge x=\mathcal{E}(r) &&= [\mathcal{E}(f())]\\
&\mid s=(f,r)(q_1,...,q_z) &&= \left[\mathcal{E}(f(p_1,...,p_z)) \middle\vert
        \begin{aligned}
          &x' = \op{split}(x,r(q_1,...,q_z)),\\
            &(x_1,...,x_z) \in x',\\
            &p_i \in Q'(q_i,x_i),1 \leq i \leq z
        \end{aligned}
        \right] \label{eq:q'_fr}
\end{flalign}
\end{document}

虽然flalign解决了问题,但mathpazo似乎扭曲了方程中间的对齐。这是为什么?

答案1

您可以通过反复试验来完成此操作,如下所示:

\documentclass[
    a4paper,
    12pt,
]{scrbook}
\usepackage[showframe]{geometry}
\usepackage{amsmath,mathtools}
\usepackage{mleftright}
%\usepackage{mathpazo}

\newcommand*{\op}[1]{\operatorname{#1}}

\begin{document}
\begin{alignat}{2}
\mathmakebox[.5em][r]{Q'}
  &(s,x) \nonumber\\
  &{\mid}\; s=(f,r)() \wedge x=\mathcal{E}(r)
    &&= [\mathcal{E}(f())] 
  \\
  &{\mid}\; s=(f,r)(q_1,\dots,q_z)
    &&=
    \mleft[
      \mathcal{E}(f(p_1,\dots,p_z)) 
    \middle\vert
      \begin{aligned}
      &x' = \op{split}(x,r(q_1,\dots,q_z)),\\
      &(x_1,\dots,x_z) \in x',\\
      &p_i \in Q'(q_i,x_i),1 \leq i \leq z
      \end{aligned}
    \mright]
\end{alignat}
\end{document}

但是,当您更改字体或页面参数时,这可能会严重中断。例如,您无需调用即可获得的正常页面参数geometry不会造成无法克服的问题,因为文本宽度会更大。相反,mathpazo字形的平均宽度比 Computer Modern 的要大,因此该技巧将不起作用,并且显示根本不适合。

这是例子。在这种棘手的情况下,几乎总是需要进行一些手动调整。

在此处输入图片描述

相同的代码mathpazo;如果你看一下结果,你会发现无论你如何向左推第一个“Q”,材料都不适合。

在此处输入图片描述

同样,代码相同(但只是用Q'代替\mathmakebox[.5em][r]{Q'},而不将控制权交给 )geometry

在此处输入图片描述


只是为了展示页面参数如何影响最终结果,下面是我在不控制geometry您的原始输入的情况下得到的结果:

在此处输入图片描述

相关内容