Escrevendo um grande comentário em algorítmico

Escrevendo um grande comentário em algorítmico

Tenho problemas para escrever comentários de texto grandes em algorítmico. O segundo like começa com preenchimento 0 da indexação de instruções. Existe alguma solução para forçar o início da segunda linha de comentários no primeiro nível? Aqui está como parece. insira a descrição da imagem aqui

Inserindo o início do código até a linha do problema. O código inteiro é bem grande.

\begin{breakablealgorithm}
    \caption{Inverse}\label{alg:inverse}
    \begin{algorithmic}[1]
        \Require Матрица $Z\in \mathbb{Z}_2^{b \times b}$, $S$ - набор неиспользованных столбцов размера $d$, на первой итерации $S$ пуст.
        \Ensure $Z^{\dagger}$, требованиям из предыдущей главы, обновленный набор $S$.
        \State $p \gets$ \text{тривиальная перестановка для матрицы размера $b$}
        \State $d \gets$ Размер перестановки $p$.
        \State $ipiv$  \Comment{Перестановка для финального восстановления $Z^{\dagger}$,  изначально пуста. Новые элементы перестановки добавляются парами вида (индекс, индекс)}.
        \State $D$ \Comment{Массив из пар вида (индекс, Правда/Ложь), необходим для решение системы методов Гаусса в конце алгоритма.}
        \State $R \gets Z$
        \State В $R$ переставить столбцы и строки с индексами из $S$ в начало матрицы, обновить перестановку $p$, в перестановку $ipiv$ добавить пары с соответствующими значениями. 
        \State $rank \gets b$ \Comment{Предполагаем, что матрица $R$ полного ранга}
        \State \textbf{Цель:} найти разложение $Z = P^T R^T D R P$, где $P$ матрица перестановки, $R$ верхне-треугольная матрица размера $r \times b$ c единичной диагональю, $D$ матрица размера $r \times r$. При этом $D$ --- блочно-диагональная матрица, с блоками на диагонали размера $1 \times 1$ или $2 \times 2$. При этом блоки $2 \times 2$ имеют вид $\begin{array}{c|c} 0 & 1  \\ \hline 1 & 0 \end{array}$ или $\begin{array}{c|c} 0 & 1  \\ \hline 1 & 1 \end{array}$
        
        \State $i \gets 0$
        \While{$i < rank$}
            \State Рассмотрим i-тую строку матрицы $R$.
            \State $j \gets$ Индекс ненулевого элемента в i-ой строке начиная с i-того столбца 
            \If{$j \ge rank$}
                \If{$i < d$} \Comment{В случае, когда строка находится среди строк, которые должны быть выбраны, матрица либо содержит нули, либо неправильной структуры.}

Responder1

Você pode usar linegoal, definindo \Longcommentpara acomodar comentários que não cabem na linha.

O \tpdtruque é antigo e garante espaçamento uniforme entre as linhas.

Acredito que isso também funcionará com breakablealgorithm.

Por favor, observe o tratamento de variáveis ​​multiletras como “classificação”.

\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{amsmath,amssymb}
\usepackage{algorithm,algpseudocode}
\usepackage{linegoal}

\newlength{\commentwidth}
\newlength{\commentcharwidth}
\newcommand{\Longcomment}[1]{%
  \settowidth{\commentcharwidth}{$\triangleright$ }%
  \setlength{\commentwidth}{\linegoal}%
  \addtolength{\commentwidth}{-\commentcharwidth}%
  \Comment{\parbox[t]{\commentwidth}{#1\par\xdef\tpd{\the\prevdepth}}}%
  \par\nointerlineskip\prevdepth=\tpd
}

\begin{document}

\begin{algorithm}

\caption{Inverse}\label{alg:inverse}

\begin{algorithmic}[1]
  \Require Матрица $Z\in \mathbb{Z}_2^{b \times b}$, $S$ - набор неиспользованных 
           столбцов размера $d$, на первой итерации $S$ пуст.
  \Ensure $Z^{\dagger}$, требованиям из предыдущей главы, обновленный набор $S$.
  \State $p \gets$ \text{тривиальная перестановка для матрицы размера $b$}
  \State $d \gets$ Размер перестановки $p$.
  \State $\mathit{ipiv}$
         \Longcomment{Перестановка для финального восстановления $Z^{\dagger}$,
           изначально пуста. Новые элементы перестановки добавляются парами вида
           (индекс, индекс).}
  \State $D$
         \Longcomment{Массив из пар вида (индекс, Правда/Ложь), необходим для
           решение системы методов Гаусса в конце алгоритма.}
  \State $R \gets Z$
  \State В $R$ переставить столбцы и строки с индексами из $S$ в начало
         матрицы, обновить перестановку $p$, в перестановку $ipiv$ добавить
         пары с соответствующими значениями. 
  \State $\mathit{rank} \gets b$ \Comment{Предполагаем, что матрица $R$ полного ранга}
  \State \textbf{Цель:} найти разложение $Z = P^T R^T D R P$, где $P$ матрица
         перестановки, $R$ верхне-треугольная матрица размера $r \times b$ c
         единичной диагональю, $D$ матрица размера $r \times r$.
         При этом $D$ --- блочно-диагональная матрица, с блоками на диагонали
         размера $1 \times 1$ или $2 \times 2$. При этом блоки $2 \times 2$
         имеют вид $\begin{array}{c|c} 0 & 1  \\ \hline 1 & 0 \end{array}$
         или $\begin{array}{c|c} 0 & 1  \\ \hline 1 & 1 \end{array}$      
  \State $i \gets 0$
  \While{$i < \mathit{rank}$}
    \State Рассмотрим i-тую строку матрицы $R$.
    \State $j \gets$ Индекс ненулевого элемента в i-ой строке начиная с i-того столбца 
    \If{$j \ge \mathit{rank}$}
      \If{$i < d$}
        \Longcomment{В случае, когда строка находится среди строк, которые
          должны быть выбраны, матрица либо содержит нули, либо
          неправильной структуры.}
      \EndIf
    \EndIf
  \EndWhile
\end{algorithmic}

\end{algorithm}

\end{document}

insira a descrição da imagem aqui

informação relacionada