Eu gostaria de escrever sobre a análise de um algoritmo. Dependendo de algumas condições, surgem vários casos. Gostaria de fazer referência aos casos, masnãobaseado exclusivamentenos números da linha. Essencialmente, quero rótulos personalizados que funcionem com hiperref.
\documentclass{article}
\usepackage{algorithm2e}
\begin{document}
\vspace{2em}
\begin{algorithm}[H]
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section \tcp*[f]{Case (1)} \;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\end{algorithm}
Analyis: Consider Case (1).
\end{document}
Responder1
algorithm2e
fornece os meios para definir números de linha personalizadosereferencie-os através \nlset
de um regular \label
:
\documentclass{article}
\usepackage{algorithm2e}
\newcommand{\algcaseref}{Case~\ref}
\begin{document}
\begin{algorithm}[H]
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
\nlset{(1)}\label{case:1}go to next section\;
current section becomes this one\;
}{
\nlset{(B)}\label{case:2}go back to the beginning of current section\;
}
}
\end{algorithm}
Analysis: Consider \algcaseref{case:1}. Also consider \algcaseref{case:2}.
\end{document}
Responder2
Você poderia fazer isso criando um contador personalizado:
\documentclass{article}
\usepackage{algorithm2e}
\usepackage{hyperref}
\newcounter{cases}
\newcommand{\case}[1]{\refstepcounter{cases}\label{#1}}
\begin{document}
\vspace{2em}
\begin{algorithm}[H]
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section \tcp*[f]{Case (1)} \case{mycase} \;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\end{algorithm}
Analyis: Consider Case (\ref{mycase}).
\end{document}
Neste MWE, o \case{}
comando aumenta o cases
contador e rotula o caso de acordo com esse contador.