Latex 只允许我在每页中放置 3 个子部分,然后除非我添加新页面,否则编号会开始堆积

Latex 只允许我在每页中放置 3 个子部分,然后除非我添加新页面,否则编号会开始堆积

我正在尝试将一些规范放在一页上,但\subsection{}除非我创建一个,否则命令总是把事情搞乱\newpage。我正在使用 overleaf。

当我这样做时:

\documentclass[11pt, oneside]{article}

\usepackage{algorithm,algpseudocode}
\usepackage{ifthen}
\usepackage{caption}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{amssymb}

%SetFonts
\algrenewcommand\algorithmicrequire{\textbf{Precondicion:}}
\algrenewcommand\algorithmicensure{\textbf{Postcondicion:}}

\newcommand{\BD}{\ Base \ de \ Datos\ }
\newcommand{\nombretabla}{\ nombre\_tabla\ }
\newcommand{\nombrecampo}{\ nombre\_campo\ }
\newcommand{\tipoconsulta}{\ tipo\_consulta\ }

\DeclareCaptionFormat{myformat}{#3}
\captionsetup[algorithm]{format=myformat}

\begin{document}

\maketitle
\section{Registro}
\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{Fields (in r: $registro$, out res : $conj(resgistro)$): } Devuelve los campos de un registro.}
  \begin{algorithmic}[1]
    \Require
      \Statex $true$
    \Ensure
      \Statex $\hat{res} =_{obs}  campos(r)$
  \end{algorithmic}
\end{algorithm}

\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{get (in r : $registro$, in c : $nombre\_campo$) $\to$ res : $valor$: } devuelve el valor del campo 'c' del registro 'r'.}
  \begin{algorithmic}[1]
    \Require
      \Statex $c \in campos(r)$
    \Ensure
      \Statex $\hat{res} =_{obs}  r[c]$
  \end{algorithmic}
\end{algorithm}

\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{add (inout r : $registro$, in c : $nombre\_campo$, in v : $valor$):} devuelve el valor del campo 'c' del registro 'r'.}
  \begin{algorithmic}[1]
    \Require
      \Statex $r = r_0$
    \Ensure
      \Statex $r = definir(r_0, c, v)$
  \end{algorithmic}
\end{algorithm}

%%%%%%%%%%%%%%%

%\newpage Uncomment to fix but leaves a lot of white space. 

%%%%%%%%%%%%%%%


\section{Tabla}

\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{insert (inout T: $Tabla$, in r: $registro$): } Agrega un registro 'r' a una tabla 'T'.}
  \begin{algorithmic}[1]
    \Require
      \Statex $ fields(r) =_{obs} fields(T) \land T_0 = \hat{T}$
    \Ensure
      \Statex $insertar(T0,\hat{r}) =_{obs} T$
  \end{algorithmic}
\end{algorithm}

\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{fields (in T: $Tabla$) $\to$ fields : $conj(nombre\_campo)$: } Dada una tabla 'T', devuelve el nombre de sus campos.}
  \begin{algorithmic}[1]
    \Require
      \Statex $true$
    \Ensure
      \Statex $fields =_{obs} campos(\hat{T})$
  \end{algorithmic}
\end{algorithm}

\subsection{}

\begin{algorithm}[ht]
  \caption{\textbf{key (in T: $Tabla$) $\to$ key : $nombre\_campo$: } Devuelve la clave de la tabla.}
  \begin{algorithmic}[1]
    \Require
      \Statex $true$
    \Ensure
      \Statex $clave(\hat{T}) =_{obs} key$
  \end{algorithmic}
\end{algorithm}

\end{document} 

有时候是这样的:

Tablas 子部分的编号全部堆积在页面底部

如果我每三个小节添加一个新页面,问题就解决了,但留下了很多空白。

即使我没有像Tablas本例一样开始新的部分,也会发生这种情况。

在原始(较长)文档中,输出是我在上图中显示的输出。但是当我只编译此代码片段时,我收到有关 \maketitle(未指定 \title)的错误,这在原始文档中不会发生(它有一个定义了标题的封面)。这是输出:

与以前类似的问题

当我评论时\maketitle输出是这样的:

第一页看起来还好,但第二页就出现了这种情况 谢谢你!

答案1

这是因为algorithm这是一个浮动环境,所以 LaTeX 会将其内容放在它认为有足够空间且合适的位置。如果您想将某些内容放在精确的位置,则不应使用浮动环境。

相关内容