我有以下问题......我有一个我想在LaTeX中实现的伪代码 我认为算法和算法包给出了相当不错的结果,所以我尝试了这个(从手册中复制)
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
\begin{algorithm} % enter the algorithm environment
\caption{Calculate $y = x^n$} % give the algorithm a caption
\label{alg1} % and a label for \ref{} commands later in the document
\begin{algorithmic} % enter the algorithmic environment
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$}
\STATE $X \Leftarrow 1 / x$
\STATE $N \Leftarrow -n$
\ELSE
\STATE $X \Leftarrow x$
\STATE $N \Leftarrow n$
\ENDIF
\end{algorithmic}
\end{algorithm}
\end{document}
结果看起来对我很好,看到这个: http://docdro.id/BXSUaWk
所以我不想在开始时编写算法,但我可以设置一些文字(在我的情况下&#39; Teil&#39;)我希望有几个阶段由一个黑色分开线...
当然它看起来也有点不同,当然根本不需要使用我现在使用的那些包......
那么有人可以帮助我吗?也许是因为他做过这样的事情或类似的东西?
我会很高兴...谢谢!! :)
答案 0 :(得分:2)
这个问题可能更适合tex.stackexchange,但无论如何,这里都有。
我们将algpseudocode
环境algorithmic
的修复程序基于以下主题(特别是Werner的回答)
我们可以从上面的线程调整phase
命令(它实际上只是(有点高级)\Statex
命令的集合 - 后者是algorithmic
环境{{ 1}}命令没有行号=没有缩进)并创建以下示例供您使用:
\State
结果如下:
您可以通过查看和调整新命令\documentclass{article}
\usepackage{algorithm,algpseudocode,amsmath}
\usepackage{caption}
\captionsetup[algorithm]{labelformat=empty} % remove default caption
\makeatletter
\newcounter{phase}[algorithm]
\newlength{\phaserulewidth}
\newcommand{\phaseTitle}{Teil} % <-- Enter default "phase name" here
\newcommand{\setphaserulewidth}{\setlength{\phaserulewidth}}
%% Top phase item
\newcommand{\topPhase}[1]{%
\vspace{2.0ex}
% Top phase rule = default algorithm rule, leave out for top item
\Statex\strut\refstepcounter{phase}\item[\textbf{\phaseTitle~\thephase:~}\textit{~#1}] % phase "caption"
% Bottom phase rule
\vspace{-3.0ex}\Statex\leavevmode\llap{\rule{\dimexpr\labelwidth+\labelsep}{\phaserulewidth}}\rule{\linewidth}{\phaserulewidth}}
%% Rest phase items
\newcommand{\phase}[1]{%
\vspace{-1.25ex}
% Top phase rule
\Statex\leavevmode\llap{\rule{\dimexpr\labelwidth+\labelsep}{\phaserulewidth}}\rule{\linewidth}{\phaserulewidth}
\Statex\strut\refstepcounter{phase}\item[\textbf{\phaseTitle~\thephase:~}\textit{~#1}] % phase "caption"
% Bottom phase rule
\vspace{-1.25ex}\Statex\leavevmode\llap{\rule{\dimexpr\labelwidth+\labelsep}{\phaserulewidth}}\rule{\linewidth}{\phaserulewidth}}
\makeatother
\setphaserulewidth{.7pt}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[0]
% Top phase
\topPhase{Calculate $y = x^n$}
\Require{$n \geq 0 \vee x \neq 0$}
\Ensure{$y = x^n$}
\State{$y \Leftarrow 1$}
\If{$n < 0$}
\State{$X \Leftarrow 1 / x$}
\State{$N \Leftarrow -n$}
\Else
\State{$X \Leftarrow x$}
\State{$N \Leftarrow n$}
\EndIf
% next phase
\phase{Calculate $z = x^n$}
\Require{$n \geq 0 \vee x \neq 0$}
\Ensure{$y = x^n$}
\State{$y \Leftarrow 1$}
\State{$\dots$}
\end{algorithmic}
\end{algorithm}
\end{document}
和\topPhase
的定义来进一步自定义。