Latex使用分页算法遇到的坑

在修改双栏论文模板时,发现算法位于参考文献后,而latex自带的algorithm环境不支持分页。采用网络上的方法创建了breakablealgorithm环境,但导致文字居中。尝试通过更换环境和使用 lushleft修正,成功解决了文字居中问题,实现了算法的正确显示。
摘要由CSDN通过智能技术生成

在修改双栏论文模板的时候碰巧要修改一个很长的算法(都准备提交manuscript了才发现有个老六算法他喵的藏在reference后面,差点出问题),但是latex自带的algorithm环境不支持算法分页,于是用了网上最多的方法,将如下代码添加在\begin{document}之前:

\makeatletter
\newenvironment{breakablealgorithm}
  {% \begin{breakablealgorithm}
   \begin{center}
     \refstepcounter{algorithm}% New algorithm
     \hrule height.8pt depth0pt \kern2pt% \@fs@pre for \@fs@ruled
     \renewcommand{\caption}[2][\relax]{% Make a new \caption
       {\raggedright\textbf{\ALG@name~\thealgorithm} ##2\par}%
       \ifx\relax##1\relax % #1 is \relax
         \addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##2}%
       \else % #1 is not \relax
         \addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##1}%
       \fi
       \kern2pt\hrule\kern2pt
     }
  }{% \end{breakablealgorithm}
     \kern2pt\hrule\relax% \@fs@post for \@fs@ruled
   \end{center}
  }
\makeatother

这个时候编译出来的算法在 \begin{algorithmic}[1]之前的一些文字自动变成了居中格式:

 分析可能是由于网传的这个代码在自定义环境时是用的\begin{center}所以导致文字自动居中,于是尝试解决方法1:将自定义环境的代码的\begin{center}和\end{center}改成\begin{left}(开始耍小聪明了),结果除了第一个Input外,其他都居左了!有效,但不完全有效。最要命的是编译器报错了,如果投斯普林甚至过不了网页编译,所以放弃该方法。

方法2:在\caption前面加上\flushleft(居左),问题解决!

\begin{breakablealgorithm}
		\flushleft\caption{i'm real ikun}
		\label{ai yo ni gan ma}
		\hspace*{0.02in}  \textbf{Input:} \\
		\hspace*{0.52in} zhi yin ni tai mei \\
		\hspace*{0.52in} Zood! \\
		\hspace*{0.52in} ge men er ming jiao ding zhen \\
		\hspace*{0.52in} Yan Distance \\
		\hspace*{0.52in} zai zhe me leng de tian \\
		\hspace*{0.52in} xiang chou gen dian zi yan \\
		\hspace*{0.02in} {\bf Output:} \\
		\hspace*{0.52in} ke rui ke mei you dian 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
若要在 LaTeX使用伪代码并分页,可以使用algorithmicx 宏包。以下是一个示例代码: ```latex \usepackage{algorithm} \usepackage{algpseudocode} \begin{algorithm}[htbp] \caption{Algorithm Name} \begin{algorithmic}[1] \Require Input parameters \Ensure Output parameters \Function{FunctionName}{Input parameters} \State statement 1 \State statement 2 \State $\cdots$ \State statement n \EndFunction \end{algorithmic} \end{algorithm} ``` 使用 `algorithm` 环境来创建算法环境,在其中使用 `algorithmic` 环境来编写伪代码。`[1]` 选项将行号设置为从 1 开始,而不是默认的 0。使用 `\Require` 和 `\Ensure` 命令来指定输入和输出参数。使用 `\State` 命令来编写伪代码中的语句。使用 `\Function` 和 `\EndFunction` 命令来定义函数。 如果伪代码太长,需要分页,则可以使用 `\algstore` 和 `\algrestore` 命令。这两个命令可以将伪代码分成多个部分,每个部分都有自己的页码。以下是一个示例代码: ```latex \usepackage{algorithm} \usepackage{algpseudocode} \begin{algorithm}[htbp] \caption{Algorithm Name} \begin{algorithmic}[1] \Require Input parameters \Ensure Output parameters \Function{FunctionName}{Input parameters} \State statement 1 \State statement 2 \State $\cdots$ \State statement n \algstore{myalg} \end{algorithmic} \end{algorithm} \clearpage \begin{algorithm}[htbp] \begin{algorithmic}[1] \algrestore{myalg} \State statement n+1 \State statement n+2 \State $\cdots$ \State statement m \EndFunction \end{algorithmic} \end{algorithm} ``` 在第一个 `algorithm` 环境中,使用 `\algstore{myalg}` 命令将伪代码保存到一个名称为 `myalg` 的桶中。然后使用 `\clearpage` 命令分页。在第二个 `algorithm` 环境中,使用 `\algrestore{myalg}` 命令从 `myalg` 桶中恢复伪代码。这将在新页面上开始一个新的算法环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值