我正在尝试将一些规范放在一页上,但\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
本例一样开始新的部分,也会发生这种情况。
在原始(较长)文档中,输出是我在上图中显示的输出。但是当我只编译此代码片段时,我收到有关 \maketitle
(未指定 \title)的错误,这在原始文档中不会发生(它有一个定义了标题的封面)。这是输出:
当我评论时\maketitle
输出是这样的:
答案1
这是因为algorithm
这是一个浮动环境,所以 LaTeX 会将其内容放在它认为有足够空间且合适的位置。如果您想将某些内容放在精确的位置,则不应使用浮动环境。