![nccmath 影响 minipage 宽度](https://linux22.com/image/238427/nccmath%20%E5%BD%B1%E5%93%8D%20minipage%20%E5%AE%BD%E5%BA%A6.png)
似乎这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
应该可以解决问题。