16 Mar 2021
Listas
Contenido
En md2tex se pueden generar diferentes tipos de listas, siguiendo una sintaxis de Markdown pero con algunas variantes. Cada elemento de la lista puede describirse con una viñeta, un número (ya sea arábigo, alfabético o romano), una descripción o un elemento de estado. Los tipos de listas que se pueden generar son los siguientes:
- unordered list: son listas itemizadas, se pueden utilizar diferentes viñetas como segundo o tercer parámetro; las viñetas pueden ser: ast, cdot, circ, dash, diamond, star, triangle o bullet. Por defecto se utiliza bullet.
- ordered list: son listas ordenadas, se pueden utilizar diferentes tipos de numeración como segundo o tercer parámetro; la numeración puede ser: alph, Alph, roman, Roman o arabic. Por defecto se utiliza arabic.
- nested list: son listas anidadas, se pueden utilizar en casos donde se necesite definir sublistas para cada elemento de la lista; no se admite ningún parámetro adicional.
- description list: son listas descriptivas (a cada item se le puede agregar una descripción), se puede utilizar en casos donde se necesita que el item no sea una viñeta o un número.
- todo list: son listas que pueden ilustrar el estado del item, esto puede ser utilizado en casos donde se necesita presentar una lista de cosas, por ejemplo: una lista de tareas donde se puede marcar el estado de cada tarea.
Sintaxis
En este apartado se explica la sintaxis para cada tipo de lista soportada por md2tex.
Unordered List
La sintaxis para estas listas es la siguiente:
[unordered-list; <optional param 1>; <optional param 2>] {
- <item>
- <item>
- <item>
- <item...>
}
- El parámetro
unordered-listes obligatorio y siempre deberá ser el primero, los parámetros opcionales pueden ser un tipo de viñeta o puede ser el parámetronoitemsepque sirve para quitar la separación por defecto de la lista. - Los items deberán aparecer en una sola línea y deben ir marcados por un símbolo al inicio del item. Los simbolos permitidos son:
-,+o*. - El parámetro
noitemseputiliza el paquete enumitem de LaTeX para quitar la separación por defecto de los items y para poner viñetas a los items. unordered-listutiliza el entorno itemize de LaTeX.
El código LaTeX generado por md2tex es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{itemize}[<optional param 1>, <optional param 2>]
\item <item>
\item <item>
\item <item>
\item <item...>
\end{itemize}
\end{document}
Ordered List
La sintaxis para las listas ordenadas es la siguiente:
[ordered-list; <optional param 1>; <optional param 2>] {
1. <item 1>
2. <item 2>
3. <item 3>
n. <item n>
}
- El parámetro
ordered-listes obligatorio y siempre deberá ser el primero, los parámetros opcionales pueden ser un tipo de numeración, según la numeración que se indique en los parámetros opcionales. - Cada elemento de la lista debe comenzar con un número arábigo (según se muestra en la sintaxis), seguido de un
.o-; de lo contrario se generará un error al compilar con pdfLaTeX. ordered-listutiliza el entorno enumerate de LaTeX.
El código LaTeX generado por md2tex es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[<optional param 1>, <optional param 2>]
\item <item 1>
\item <item 2>
\item <item 3>
\item <item n>
\end{enumerate}
\end{document}
Nested List
La sintaxis para las listas anidadas es la siguiente:
[nested-list] {
1. <item 1>
i. <item i>
a. <item a>
A. <item A>
+ <item>
- <item>
- <item>
+ <item>
B. <item B>
b. <item b>
ii. <item ii>
2. <item 2>
}
Las listas anidadas tienen algunas limitaciones, estas se mencionan a continuación:
- No soportan parámetros opcionales.
- El primer item de la lista debe comenzar justo al inicio de la línea.
- Cada subnivel de la lista deberá estar separado por una tabulación de cuatro caracteres.
- No se soportan parráfos asociados a ningún item.
- Por limitaciones de LaTeX, no se soportan listas de más de seis niveles.
- Los primeros cuatro niveles de lista utilizan el entorno enumerate y los dos niveles restantes utilizan el entorno itemize.
El código LaTeX generado por md2tex es el siguiente:
\documentclass{article}
\begin{document}
\begin{enumerate}
\item <item 1>
\begin{enumerate}
\item <item i>
\begin{enumerate}
\item <item a>
\begin{enumerate}
\item <item B>
\begin{itemize}
\item <item>
\begin{itemize}
\item <item>
\item <item>
\end{itemize}
\item <item>
\end{itemize}
\item <item B>
\end{enumerate}
\item <item b>
\end{enumerate}
\item <item ii>
\end{enumerate}
\item <item 2>
\end{enumerate}
\end{document}
Description List
La sintaxis para las listas descriptivas es la siguiente:
[description-list; <optional param>] {
<item title>. <item>
<item title>. <item>
<item title>. <item>
}
- El primer parámetro deberá ser
description-listy es obligatorio. - <item title> debe ir separado del <item> por
.o-. - Solo soporta un parámetro opcional que puede ser
noitemsep. - Utiliza el entorno description de LaTeX.
El código LaTeX generado por md2tex es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{description}[<optional param>]
\item[<item title>] <item>
\item[<item title>] <item>
\item[<item title>] <item>
\end{description}
\end{document}
Todo List
La sintaxis para las todo list “lista de quehaceres” es la siguiente:
[todo-list; <optional param>] {
<item status> <item>
<item status> <item>
<item status> <item>
}
- El primer parámetro deberá ser
todo-listy es obligatorio. - Solo soporta un parámetro opcional que puede ser
noitemsep. \<item status\>puede ser el símbolo+para marcar con un check el item, el símbolo-para marcar con una x el item y el símbolo*para dejar desmarcado el item.
El código LaTeX generado es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\usepackage{amssymb}
\usepackage{pifont}
\newlist{todolist}{itemize}{1}
\newcommand{\done}{\rlap{$\square$}{\large\hspace{1pt}\ding{51}}\hspace{-2.5pt}}
\newcommand{\undone}{\rlap{$\square$}{\large\hspace{1pt}\ding{55}}}
\begin{document}
\begin{itemize}[label=]
\item \begin{todolist}[label=$\square$]
\item[<item status>] <item>
\item[<item status>] <item>
\item[<item status>] <item>
\end{todolist}
\end{itemize}
\end{document}
LaTeX hace uso de los paquetes amssymb y pifont para mostrar caracteres especiales en el archivo PDF que se generará con pdfLaTeX. El código generado crea un nuevo tipo de lista a partir del entorno itemize y crea dos nuevos comandos \doney \undone que son los que irán pasados como parámetro a <item status>, según el caracter que tenga <item status>.
Este tipo de lista está basado en una solución presentada por Joe Corneli en StackExchange.
https://tex.stackexchange.com/questions/247681/how-to-create-checkbox-todo-list
Demostración
Unordered List
En un archivo de texto (por ejemplo: unordered-list.md); escriba lo siguiente:
# Unordered List
## bullet: default
[unordered-list]{
- item 1
- item 2
- item 3
}
## bullet: star
[unordered-list; star]{
+ item 1
+ item 2
+ item 3
}
## bullet: diamond
[unordered-list; diamond; noitemsep]{
* item 1
* item 2
* item 3
}
Ejecute md2tex:
$ ./md2tex unordered-list.md
El código LaTeX generado es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\section*{Unordered List}
\subsection*{bullet: default}
\begin{itemize}
\item item 1
\item item 2
\item item 3
\end{itemize}
\subsection*{bullet: star}
\begin{itemize}[label=$\star$]
\item item 1
\item item 2
\item item 3
\end{itemize}
\subsection*{bullet: diamond}
\begin{itemize}[label=$\diamond$,noitemsep]
\item item 1
\item item 2
\item item 3
\end{itemize}
\end{document}
Ejecute pdfLaTeX:
$ pdflatex unordered-list.tex
La salida en formato PDF será la siguiente:
Ordered List
En un archivo de texto (por ejemplo: ordered-list.md); escriba lo siguiente:
# Ordered List
## default
[ordered-list] {
1. item 1
2. item 2
3. item 3
}
## numeration: alph
[ordered-list; alph] {
1. item 1
2. item 2
3. item 3
}
## numeration: Roman
[ordered-list; noitemsep; Roman] {
1- item 1
2- item 2
3- item 3
}
Ejecute md2tex:
$ ./md2tex ordered-list.md
El código LaTeX generado es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\section*{Ordered List}
\subsection*{default}
\begin{enumerate}
\item item 1
\item item 2
\item item 3
\end{enumerate}
\subsection*{numeration: alph}
\begin{enumerate} [label=\alph*.]
\item item 1
\item item 2
\item item 3
\end{enumerate}
\subsection*{numeration: Roman}
\begin{enumerate} [noitemsep,label=\Roman*.]
\item item 1
\item item 2
\item item 3
\end{enumerate}
\end{document}
Ejecute pdfLaTeX:
$ pdflatex ordered-list.tex
El archivo PDF generado es el siguiente:
Nested List
En un archivo de texto (por ejemplo: nested-list.md); escriba lo siguiente:
# Nested List
[nested-list] {
1. Level 1
a. Level 2
i. Level 3
A. Level 4
+ Level 5
* Level 6
* Level 6
+ Level 5
B. Level 4
2. Level 1
}
Ejecute md2tex:
$ ./md2tex nested-list.md
El código LaTeX generado es el siguiente:
\documentclass{article}
\begin{document}
\section*{Nested List}
\begin{enumerate}
\item Level 1
\begin{enumerate}
\item Level 2
\begin{enumerate}
\item Level 3
\begin{enumerate}
\item Level 4
\begin{itemize}
\item Level 5
\begin{itemize}
\item Level 6
\item Level 6
\end{itemize}
\item Level 5
\end{itemize}
\item Level 4
\end{enumerate}
\end{enumerate}
\end{enumerate}
\item Level 1
\end{enumerate}
\end{document}
Ahora, ejecute pdfLaTeX:
$ pdflatex nested-list.tex
El archivo PDF generado es el siguiente:
Description List
En un archivo de texto (por ejemplo: description-list.md); escriba lo siguiente:
# Description List
## default
[description-list] {
First. Item 1
Second. Item 2
Third. Item 3
}
## _description list_ param: noitemsep
[description-list; noitemsep] {
One- Item 1
Two- Item 2
Three- Item 3
}
Ejecute md2tex:
$ ./md2tex description-list.md
El código LaTeX generado es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\section*{Description List}
\subsection*{default}
\begin{description}
\item[First] Item 1
\item[Second] Item 2
\item[Third] Item 3
\end{description}
\subsection*{\textit{description list} param: noitemsep}
\begin{description}[noitemsep]
\item[One] Item 1
\item[Two] Item 2
\item[Three] Item 3
\end{description}
\end{document}
Ejecute pdfLaTeX en la carpeta latex/tex/:
$ pdflatex description-list.tex
El archivo PDF generado será similar al siguiente:
Todo List
En un archivo de texto (por ejemplo: todo-list.md); escriba lo siguiente:
# Todo List
## default
[todo-list] {
- item 1
+ item 2
* item 3
+ item 4
- item 5
}
Ejecute md2tex:
$ ./md2tex todo-list.md
El código LaTeX generado es el siguiente:
\documentclass{article}
\usepackage{enumitem}
\usepackage{amssymb}
\usepackage{pifont}
%% todolist --> variant of: Joe Corneli
%% https://tex.stackexchange.com/questions/247681/how-to-create-checkbox-todo-list
\newlist{todolist}{itemize}{1}
\newcommand{\done}{\rlap{$\square$}{\large\hspace{1pt}\ding{51}}\hspace{-2.5pt}}
\newcommand{\undone}{\rlap{$\square$}{\large\hspace{1pt}\ding{55}}}
\begin{document}
\section*{ToDo List}
\subsection*{default}
\begin{itemize}[label=]
\item \begin{todolist}[label=$\square$]
\item[\undone] item 1
\item[\done] item 2
\item item 3
\item[\done] item 4
\item[\undone] item 5
\end{todolist}
\end{itemize}
\end{document}
Ejecute pdfLaTeX en la carpeta latex/tex/:
$ pdflatex todo-list.tex
El archivo PDF generado será similar al siguiente: