nccmath 影响 minipage 宽度

nccmath 影响 minipage 宽度

似乎这nccmath影响了 minipages 的布局。在 MWE 中,您可以看到左侧minipage显然没有像我想要的那样占据页面的 70%。我希望有一个简单的解决方案,否则我需要摆脱它nccmath

我遇到了一些问题nccmath之前曾遇到过包含小页面的列表中项目编号的对齐方式所以我想知道我是否应该尝试在没有该包的情况下工作。

\documentclass[fleqn,preview=false]{standalone}

\usepackage{amsmath}
\usepackage{nccmath}% Needed for fleqn environment

\begin{document}
\begin{minipage}{0.70\linewidth}
\begin{align*}
    y &= x 
\end{align*}
\end{minipage}
\begin{minipage}{0.30\linewidth}
    Note: abcd
\end{minipage}
\end{document}

答案1

看起来nccmath确实会破坏仅包含数学显示的小页面,将其宽度设置为显示左侧空间与方程式宽度相加所得的宽度。

如果小页面包含“段落材料”,则其宽度设置正确。

解决方案:启动一个仅包含以下内容的小页面:

\hrule height 0pt width \hsize

一些例子(在代码中,\hrule为了使它可见,它有一个高度)

\documentclass[a4paper,fleqn]{article}

\usepackage{amsmath}
\usepackage{nccmath}% Needed for fleqn environment

\begin{document}
% let's have a "ruler"
\hbox to\hsize{\leaders\hrule\hskip0pt plus 7fill
  \kern-.2pt\vrule depth 2pt\kern-.2pt
  \leaders\hrule\hskip0pt plus 3fill}
\medskip

Example 1: we put a rule with the desired width

\noindent\begin{minipage}{0.70\columnwidth}
\hrule width \hsize\kern-.4pt
\begin{align*}
    y &= x 
\end{align*}
\end{minipage}%
\begin{minipage}{0.30\columnwidth}
\hrule
    Note: abcd

Where should this go?
\hrule
\end{minipage}

\medskip

Example 2: we don't specify the rule's width

\noindent\begin{minipage}{0.70\columnwidth}
\hrule\kern-.4pt
\begin{align*}
    y &= x 
\end{align*}
\end{minipage}%
\begin{minipage}{0.30\columnwidth}
\hrule
    Note: abcd

Where should this go?
\hrule
\end{minipage}

\medskip

Example 3: text before the display

\noindent\begin{minipage}{0.70\columnwidth}
\hrule\kern-.4pt
Some text before
\begin{align*}
    y &= x 
\end{align*}
\end{minipage}%
\begin{minipage}{0.30\columnwidth}
\hrule
    Note: abcd

Where should this go?
\hrule
\end{minipage}

\medskip

Example 4: text below the display

\noindent\begin{minipage}{0.70\columnwidth}
\hrule\kern-.4pt
\begin{align*}
    y &= x 
\end{align*}
Some text below
\end{minipage}%
\begin{minipage}{0.30\columnwidth}
\hrule
    Note: abcd

Where should this go?
\hrule
\end{minipage}

\end{document}

代码输出

答案2

在您的代码中的注释中,我看到您需要nccmath环境fleqn。您可以在序言中自己定义该环境,而无需加载nccmath。您可以使用该包中的代码:

\makeatletter
\newenvironment*{fleqn}[1][\z@]{\@fleqntrue
  \setlength\@mathmargin{#1}\ignorespaces
}{%
  \ignorespacesafterend
}
\makeatother

答案3

该错误是由于包\NCC@ignorepar中的命令引起的nccmath

“如果从新段落开始,此命令将删除显示公式前的额外垂直空间,并且如果应用了 \useshortskip 命令,则将 beforeskip 更改为 \abovedisplayshortskip。”

\let \NCC@ignorepar=\relax应该可以解决问题。

相关内容