Como faço para criar e recuar seções de “preâmbulo” em algoritmos?

Como faço para criar e recuar seções de “preâmbulo” em algoritmos?

Estou usando algorithm2epara escrever algoritmos. Estou fazendo as coisas de tal forma que, antes do algoritmo propriamente dito, tenho uma seção para argumentos de entrada e saída e, quando relevante, referências a outros algoritmos e equações que podem estar distantes no documento. Igual a:

Isso está renderizando corretamente

Eu introduzi a seção "preâmbulo" de referências com \SetKwInput{KwRef}{Referências}. Até agora tudo bem.

Mas a maneira como estou fazendo isso não parece ser a mais inteligente. Estou usando \quadno início de cada item:

\begin{algorithm}
        \caption{My example}
        \KwIn{\\
            \quad$X$: something\\
            \quad$Y$: something else
        }
        \KwOut{\\
            \quad$R$: the result
        }
        \KwRef{\\
            \quad$f(\cdot)$ is the function introduced in Equation~\ref{eq:znorm}
        }
        $R \leftarrow X + Y$\;
    \end{algorithm}

Qual é a maneira inteligente de fazer isso?

Responder1

Em vez disso, você poderia realizar o posicionamento \quadautomaticamente por meio de um tabular; isso parece se adequar ao seu uso atual:

insira a descrição da imagem aqui

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{algorithm2e}

\renewcommand{\KwIn}[1]{%
  \KwIna{\strut\\ \quad\begin{tabular}{@{} l @{}} #1 \end{tabular}}}
\renewcommand{\KwOut}[1]{%
  \KwOuta{\strut\\ \quad\begin{tabular}{@{} l @{}} #1 \end{tabular}}}
\newcommand{\KwRef}[1]{%
  \KwRefa{\strut\\ \quad\begin{tabular}{@{} l @{}} #1 \end{tabular}}}
\SetKwInput{KwIna}{Parâmetros de Entrada}
\SetKwInput{KwOuta}{Parâmetros de Saída}
\SetKwInput{KwRefa}{Referências}

\begin{document}

\begin{algorithm}
  \caption{My example}
  \KwIn{%
    $X$: something \\
    $Y$: something else
  }
  \KwOut{%
    $R$: the result
  }
  \KwRef{%
    $f(\cdot)$ is the function introduced in Equation~\ref{eq:znorm}
  }
  $R \leftarrow X + Y$\;
\end{algorithm}

\renewcommand{\theequation}{2.3}% Just for this example
\begin{equation}
  f(x) = ax^2 + bx + c \label{eq:znorm}
\end{equation}

\end{document}

informação relacionada