usar overleaf online linea descargar como latex

overleaf - latex online editor



Indentación en látex algorítmico (3)

¿Cómo es posible sangrar líneas en un algoritmo (algorítmico) en látex?

Me gustaría poder escribir lo siguiente:

/begin{algorithm}[H] /caption{My Awesome Program} /label{awesome-algorithm} /begin{algorithmic}[1] /FOR { $i=0$ to $logn$ } /STATE Step A: % would like the indent the next lines... /STATE do something /STATE do another thing /STATE Step B /ENDFOR /end{algorithmic} /end{algorithm}

¿Cómo es posible sangrar esas líneas? He estado tratando de encontrar la respuesta buscando en Google sin éxito. Espero que puedan ayudarme. Gracias.

Actualmente estoy usando lo siguiente para la sangría:

/STATE / / / / do something

lo que parece totalmente equivocado. Pero funciona.


Intenta esto en su lugar:

/STATE/hspace{/algorithmicindent} do something /STATE/hspace{/algorithmicindent} do another thing

Debería funcionar mejor porque usa el valor de sangría actual para sangrar.

Edición : Usando la sugerencia de Charles, podría definir un nuevo comando, /INDSTATE :

/newcommand{/INDSTATE}[1][1]{/STATE/hspace{#1/algorithmicindent}}

y luego usar eso cuando quieras sangría. Por defecto, /INDSTATE por un nivel, pero puede cambiarlo:

/INDSTATE do something % What you want /INDSTATE[2] do something % Indent by twice the amount


Le sugiero que no haga sangría de esa manera. El paquete está diseñado para formatear el pseudocódigo de una manera estándar para que sea más fácil para sus lectores.

Estás tratando de romper ese estándar. Sería mucho mejor tratar de reescribir el código para ajustarse a lo que los lectores esperan.

¿Por qué estás etiquetando los pasos A y B, de todos modos? Cada declaración se supone que es su propio paso. Parece que estás agregando una estructura extra que hace que el código sea menos legible. ¿Puedes conseguir el mismo efecto con los comentarios? ¿Qué hay de combinar "hacer algo" y "hacer otra cosa" en una declaración?


No pude hacer funcionar a Alok, así que escribí esto:

% Put in preamable: /usepackage{forloop} /newcounter{ct} /newcommand{/markdent}[1]{/forloop{ct}{0}{/value{ct} < #1}{/hspace{/algorithmicindent}}} /newcommand{/markcomment}[1]{/Statex/markdent{#1}}

Luego, para poner "Este es mi comentario" en el nivel de sangría 3:

/markcomment{3}{"This is my comment"}

Edición: uso algoritmicx (por lo tanto, / State y no / STATE)