如何在文本块中添加算法块

如何在文本块中添加算法块

我正在制作海报,在调整文本块内的算法块时遇到了问题。

我的代码在下面,其中包含包和代码。

\documentclass[a0,portrait]{a0poster}

\pagestyle{empty}
\setcounter{secnumdepth}{0}

\usepackage[absolute]{textpos}

\usepackage{ae}                         %% Font Encoding T1 (PDF)
\usepackage{lscape}                     %% Utilizar página em landscape
\usepackage{url}                        %% Trata URLs, e-mails e paths
\usepackage{float}
%\usepackage[num]{abntcite}
\usepackage[pdftex]{graphicx,color}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage[position=top]{subfig}
\usepackage{url}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsfonts,textcomp}
\usepackage{color}
\usepackage{fancyhdr}
\usepackage[font={normal,it}]{caption}
\usepackage{fancyvrb}
\usepackage{algorithm}
\usepackage{algorithmic}    
\usepackage{multirow}
\usepackage{textfit}
\usepackage{rotating}
\usepackage{boxedminipage}
\usepackage{setspace}
\usepackage{multicol}
\usepackage{subfig}
\usepackage{tikz}
\usepackage[a0paper,left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
%=========- Color -===========================================%
\usepackage{color}
\definecolor{DarkBlue}{rgb}{0.1,0.1,0.5}
\definecolor{Red}{rgb}{0.9,0.0,0.1}
\definecolor{DarkGreen}{rgb}{0.10,0.50,0.10}

%=========- Command -======================================%
\let\Textsize\normalsize
\def\Head#1{\noindent\hbox to \hsize{\hfil{\LARGE\color{DarkBlue} #1}}\bigskip}
\def\LHead#1{\noindent{\LARGE\color{DarkBlue} #1}\smallskip}
\def\Subhead#1{\noindent{\large\color{DarkBlue} #1}}
\newcommand{\quiteHuge}{\fontsize{70.3}{93}\selectfont}

\def\Title#1{\begin{center}\noindent{\quiteHuge\color{DarkBlue}\textbf{#1}}\end{center}}

\TPGrid[40mm,40mm]{14}{25}  % 4 - 1 - 4 - 1 - 4 Columns
\parindent=0pt
\parskip=0.5\baselineskip
%================Begin===================================%
\begin{document}
\begin{textblock}{4.2}(0,3.6)
  \begin{algorithm}[H]
    \caption{Calculate $Q_{ij}$}\label{alg:calcqij}
    \begin{algorithmic}[1]
      \REQUIRE $\tau>0,A\ne\emptyset,N=|A|$
      \ENSURE $Q_{ij}(\Delta t)\sum_{t\in A} e^{-\frac{|t-\delta t|}{\tau}}, \forall t\in A$
      \STATE $\mathbf{A}\Leftarrow\mathrm{sort}(A)\;\{O(N\log N)\}$
      \STATE $Q^-(1)\Leftarrow 1$
      \STATE $Q^+(N)\Leftarrow 0$
      \FOR{$k=1$ \TO $N-1$}
      \STATE  $ed(k)\Leftarrow e^{-\frac{\mathbf{A}(k+1)-\mathbf{A}(k)}{\tau}}$
      \ENDFOR
      \FOR{$k=1$ \TO $N-1$}
      \STATE $Q^-(k+1)\Leftarrow 1+Q^-(k)\cdot ed(k)$
      \STATE $Q^+(N-k)\Leftarrow (Q^+(N-k+1)+1)\cdot ed(N-k)$
      \ENDFOR
      \FOR{$k=1$ \TO $N$}
      \STATE $Q_{ij}(A(k))\Leftarrow Q^+(k)+Q^-(k)$
      \ENDFOR
    \end{algorithmic}
    \end{algorithm}  %====ERROR LINE====%
\end{textblock} 
\end{document}

我总是收到有关浮动列宽的错误消息。

未定义的控制序列。\endalgorithm ...oatbox \global \setbox \@currbox \float@makebox \columnwidt... l.82 \end{algorithm} 错误消息顶行末尾的控制序列从未被 \def'ed。如果您拼错了它(例如,\hobx'), typeI' 和正确的拼写(例如,`I\hbox')。否则继续,我会忘记未定义的内容。

有人知道如何解决此问题吗?

如果你有任何疑问请告诉我。

谢谢。

答案1

textpos旨在\textblock将内容放置在当前页面的固定位置。因此,您不应在其中存储可以浮动的内容,即使float包裹提供了一个非浮动的、保持在右侧[H]的浮点说明符。相反,你可以通过使用以下方法欺骗 TeX,让它认为它正在处理浮点数:

\captionof{algorithm}{<your caption here>}

由提供caption. 或者,capt-of包裹提供类似的功能。因此,您的文档结构应该类似于:

\begin{textblock}{4.2}(0,3.6)
  \captionof{algorithm}{Calculate $Q_{ij}$\label{alg:calcqij}}
  \begin{algorithmic}[1]
    %...
  \end{algorithmic}
\end{textblock}

相关内容