在修改双栏论文模板的时候碰巧要修改一个很长的算法(都准备提交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