算法超出页面的上边缘

算法超出页面的上边缘

乳胶算法何时会越过页面的顶部边缘?我在网上搜索了很多,并尝试使用 --floatsep, textfloatsepintextsep但到目前为止似乎没有任何东西能解决我的问题。任何快速建议都将不胜感激。我的代码附在下面。

\documentclass[conference]{IEEEtran}
\pdfpagewidth 8.5in
\pdfpageheight 11in
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}        
\begin{algorithm}[!t]
        \caption{Candidate Score Normalization Algorithm}
        \label{algo2}
        \begin{algorithmic}[1]
        \Procedure{NORMALIZE}{$R$}

        \For{CandidateSearchTerm $t$ $\in$ $R.keys$}
        \State $R[t] \gets 1-\frac{position(t)}{size(R)}$
        \EndFor
        \State \textbf{return} $R$ 
        \EndProcedure
        \end{algorithmic}
        \end{algorithm}
    \setlength{\textfloatsep}{0pt}
\end{document}

答案1

水平线扰乱了标题定位。您可以通过添加支柱来改善它:

    \caption{\strut Candidate Score Normalization Algorithm}

在此处输入图片描述

与原文比较

\documentclass[conference]{IEEEtran}
\pdfpagewidth 8.5in
\pdfpageheight 11in
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{blindtext}
\begin{document}        
\begin{algorithm}[!t]
        \caption{Candidate Score Normalization Algorithm}
        \label{algo2}
        \begin{algorithmic}[1]
        \Procedure{NORMALIZE}{$R$}

        \For{CandidateSearchTerm $t$ $\in$ $R.keys$}
        \State $R[t] \gets 1-\frac{position(t)}{size(R)}$
        \EndFor
        \State \textbf{return} $R$ 
        \EndProcedure
        \end{algorithmic}
        \end{algorithm}
    \setlength{\textfloatsep}{0pt}
\Blindtext
\end{document}

在此处输入图片描述

答案2

您可以通过重新设计浮动样式(并基于 定义新样式)来下推规则ruled

\documentclass[conference]{IEEEtran}
\pdfpagewidth 8.5in
\pdfpageheight 11in

\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{lipsum,showframe}% just for the example

\makeatletter
\newcommand\fs@betterruled{%
  \def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\vspace*{5pt}\hrule height.8pt depth0pt \kern2pt}%
  \def\@fs@post{\kern2pt\hrule\relax}%
  \def\@fs@mid{\kern2pt\hrule\kern2pt}%
  \let\@fs@iftopcapt\iftrue}
\floatstyle{betterruled}
\restylefloat{algorithm}
\makeatother


\begin{document}

\begin{algorithm}[!t]
\caption{Candidate Score Normalization Algorithm\label{algo2}}
\begin{algorithmic}[1]
  \Procedure{NORMALIZE}{$R$}

    \For{CandidateSearchTerm $t$ $\in$ $R.keys$}
      \State $R[t] \gets 1-\frac{position(t)}{size(R)}$
    \EndFor
    \State \textbf{return} $R$ 
  \EndProcedure
\end{algorithmic}
\end{algorithm}

\lipsum[1-20]
\end{document}

我添加了 5pt 的垂直空间:顶部规则周围的空间为 2+2,规则厚度为 0.8,上升部之间的差异为 0.2。文本周围的规则由 生成showframe,只要您删除对它的调用,它们就会消失:我使用它来进行更好的视觉比较。

在此处输入图片描述

事实上,algorithm环境没有越过顶部边距:如果我删除该\restylefloat线,我们将得到默认结果。它是右列中第一条未越过边距的线。

在此处输入图片描述

相关内容