如何使多列中的公式编号左对齐?

如何使多列中的公式编号左对齐?

我有以下代码:

\documentclass[11pt, spanish]{article}
%\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{legalpaper, 
a4paper,
%top=25mm, 
%bottom=25mm, 
left=30mm,
right=30mm}

\usepackage{multicol}

\usepackage{hyperref}


\usepackage[fleqn]{mathtools}
%\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{relsize}
\usepackage{mathrsfs}
\numberwithin{equation}{section}
%\setlength{\jot}{1.5ex}%10pt}
\renewcommand{\theequation}{IV.\thesection.\arabic{equation}}

\title{Control discreto}

\begin{document}

\section{Asignación de especificaciones}\label{SPECS}
\vspace{-12mm}
\begin{multicols}{2}
\begin{equation}
G_{1}(s) = \dfrac{k_{c}} {\tau_{c} * s + 1} \label{REF1}
\end{equation}
\begin{equation}
G_{2}(s) = \dfrac{\omega_{n}^2} {s^2 + 2*\zeta*\omega_{n}*s + \omega_{n}^2} \label{REF2}
\end{equation}
\end{multicols}

\end{document}

这将产生以下输出:

几乎

几乎可以了,但是:

  • 我希望方程式编号对于两个方程式具有相同的间距(自动间距或指定它无关紧要)
  • 我想知道是否有其他方法可以消除多列之前的空白\vspace{-12mm},也许更“严格”?

另一方面,我不明白为什么不包括 hyperref 包会产生这个输出:

weird_hyperref

希望大家能轻松回答这个问题并帮助我,这是我论文的最后一点。
提前致谢。

答案1

首先,您的两个问题不符合标题,所以我将全部回答。

  1. 标题:如何左对齐问题编号:只需添加选项leqno即可\documentclass[…]{article}

  2. 两个方程的间距相同:这会自动发生。

  3. 多列上方没有垂直空间:正如 Skillmon 在他的评论中指出的那样:\setlength{\multicolsep}{0pt}在多列之前添加。

因此,更正后的代码为:

\documentclass[leqno,11pt, spanish]{article}
%\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{legalpaper, 
a4paper,
%top=25mm, 
%bottom=25mm, 
left=30mm,
right=30mm}

\usepackage{multicol}

\usepackage{hyperref}


\usepackage[fleqn]{mathtools}
%\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{relsize}
\usepackage{mathrsfs}
\numberwithin{equation}{section}
%\setlength{\jot}{1.5ex}%10pt}
\renewcommand{\theequation}{IV.\thesection.\arabic{equation}}

\title{Control discreto}
\setlength{\multicolsep}{0pt}
\begin{document}

\section{Asignación de especificaciones}\label{SPECS}
\vspace{-12mm}
\begin{multicols}{2}
\begin{equation}
G_{1}(s) = \dfrac{k_{c}} {\tau_{c} * s + 1} \label{REF1}
\end{equation}
\begin{equation}
G_{2}(s) = \dfrac{\omega_{n}^2} {s^2 + 2*\zeta*\omega_{n}*s + \omega_{n}^2} \label{REF2}
\end{equation}
\end{multicols}

\end{document}

输出:

输出

答案2

这为每个方程保留了一个与其宽度成比例的空间。

\documentclass[11pt, spanish]{book}
\usepackage{babel}
%\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{
  a4paper,
  %top=25mm, 
  %bottom=25mm, 
  left=30mm,
  right=30mm,
}

\usepackage[fleqn,leqno]{mathtools}
\usepackage{amsfonts}
\usepackage{environ,xparse}

\usepackage{lipsum} % for context

\usepackage{hyperref}

\renewcommand{\thechapter}{\Roman{chapter}}

\numberwithin{equation}{section}

\ExplSyntaxOn
\NewEnviron{doubleequation}
 {
  \saiz_doubleeq:V \BODY
 }

\seq_new:N \l__saiz_doubleeq_seq
\box_new:N \l__saiz_doubleeq_box
\fp_new:N \l__saiz_doubleeq_l_fp
\fp_new:N \l__saiz_doubleeq_r_fp

\cs_new_protected:Nn \saiz_doubleeq:n
 {
  \seq_set_split:Nnn \l__saiz_doubleeq_seq { \\ } { #1 }
  % measure the left equation
  \hbox_set:Nn \l__saiz_doubleeq_box
   {
    \cs_set_eq:NN \label \use_none:n
    $\displaystyle\seq_item:Nn \l__saiz_doubleeq_seq { 1 }$
   }
  \fp_set:Nn \l__saiz_doubleeq_l_fp
   { \dim_to_fp:n { \box_wd:N \l__saiz_doubleeq_box } }
  % measure the right equation
  \hbox_set:Nn \l__saiz_doubleeq_box
   {
    \cs_set_eq:NN \label \use_none:n
    $\displaystyle\seq_item:Nn \l__saiz_doubleeq_seq { 2 }$
   }
  \fp_set:Nn \l__saiz_doubleeq_r_fp
   { \dim_to_fp:n { \box_wd:N \l__saiz_doubleeq_box } }
  %
  \[
  \setlength{\abovedisplayskip}{0pt}
  \begin{minipage}
   {
    \fp_eval:n
     {
      \l__saiz_doubleeq_l_fp / ( \l__saiz_doubleeq_l_fp + \l__saiz_doubleeq_r_fp )
     }
    \displaywidth
   }
   \begin{equation}\seq_item:Nn \l__saiz_doubleeq_seq { 1 }\end{equation}
  \end{minipage}
  \begin{minipage}
   {
    \fp_eval:n
     {
      \l__saiz_doubleeq_r_fp / ( \l__saiz_doubleeq_l_fp + \l__saiz_doubleeq_r_fp )
     }
    \displaywidth
   }
   \begin{equation}\seq_item:Nn \l__saiz_doubleeq_seq { 2 }\end{equation}
  \end{minipage}
  \]
 }
\cs_generate_variant:Nn \saiz_doubleeq:n { V }
\ExplSyntaxOff

\begin{document}

\setcounter{chapter}{3}

\chapter{Control discreto}

\section{Asignación de especificaciones}\label{SPECS}

\lipsum*[3]
\begin{doubleequation}
G_{1}(s) = \frac{k_{c}} {\tau_{c}s + 1} \label{REF1}
\\
G_{2}(s) = \frac{\omega_{n}^2} {s^2 + 2\zeta\omega_{n}s + \omega_{n}^2} \label{REF2}
\end{doubleequation}
\lipsum*[4]
\begin{equation}
G_{3}(s)=s^2
\end{equation}
\lipsum[5]

\end{document}

在此处输入图片描述

答案3

正如 Dave 所建议的,minipage 是这种情况的正确选择:

\begin{minipage}{0.4\linewidth}
\begin{equation}
G_{1}(s) = \dfrac{k_{c}} {\tau_{c} * s + 1} \label{REF1}
\end{equation}
\end{minipage}
\begin{minipage}{0.55\linewidth}
\begin{equation}
G_{2}(s) = \dfrac{\omega_{n}^2} {s^2 + 2*\zeta*\omega_{n}*s + \omega_{n}^2} \label{REF2}
\end{equation}
\end{minipage}

结果

如您所见,每个方程式及其编号之间的间距几乎相同。我想要避免的是多列空间分布不均(如我发布的第一个示例所示)。

问题其实很简单,多列环境将线宽一分为二,使得第二个方程几乎与其编号重叠。
为了解决这个问题,我发现更简单的方法是手动调整“列”宽度,这不是一个真正严格的方法,但对我来说很有效(因为我只有少数这种情况)。

另一方面,\setlength\multicolsep{0pt}当使用多列环境时,技巧可以完成工作。

感谢大家的帮助

相关内容