
tabular
es array
como itemize
es para…?
Me gustaría tener una lista como
\documentclass{article}
\begin{document}
\begin{eqlist}
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{eqlist}
\end{document}
ya estoy usandoenumitem
, pero no lo hago.pensarese paquete será de alguna ayuda. Por supuesto, cualquier solución funcionará :)
Variaciones importantes:
- ¿Qué pasa con las matemáticas de visualización?
- ¿Qué pasa con los otros
list
entornos, comodescription
yenumerate
?
Caso de uso
En realidad, el caso de uso es bastante trivial: tener una lista de ecuaciones. Se podría llamar a esto "por diversión", pero en el pasado he creado algo para notas de clase que me permitió hacer algo como esto (por ejemplo, enumerar y nombrar las propiedades de grupos algebraicos). Pensé que la idea se limitaba a eso, así que nunca generalicé mi solución (terriblemente desordenada), pero veo que el patrón aparece cada vez más en varios documentos donde en realidadnoLuce absolutamente horrible como era de esperar. Convenientemente, no tengo ningún ejemplo sólido exceptoeste documento para novatos que apareció en reddit.com/r/LaTeX.
Respuesta1
Aquí hay una solución (no se usa, pero espero que sea compatible con enumitem
)
Nota:No entiendo qué quiere hacer el OP con las matemáticas de visualización
Limitación:No se admiten líneas en blanco (este código no funcionará)
\begin{mathitem}
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{mathitem}
código completo
\documentclass{article}
\usepackage{xpatch}
\usepackage{amsmath,url}
\usepackage{enumitem}
\makeatletter
\newcommand{\mtmathitem}{%
\xpatchcmd{\item}{\@inmatherr\item}{\relax\ifmmode$\fi}{}{\errmessage{Patching of \noexpand\item failed}}
\xapptocmd{\@item}{$}{}{\errmessage{appending to \noexpand\@item failed}}}
\makeatother
\newenvironment{mathitem}[1][]{%
\itemize[#1]\mtmathitem}{$\endlist} %$
\newenvironment{mathenum}[1][]{%
\enumerate[#1]\mtmathitem}{$\endlist} %$
\newenvironment{mathdesc}[1][]{%
\description[#1]\mtmathitem}{$\endlist} %$
\begin{document}
\begin{mathitem}
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{mathitem}
\begin{mathenum}
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{mathenum}
\begin{mathenum}[label=\emph{\alph*})]
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{mathenum}
\begin{mathdesc}
\item[some] E=mc^2
\item[thing] e^{i\pi}+1=0
\item[else] \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{mathdesc}
\end{document}
Respuesta2
(Respuesta modificada para (i) agregar un entorno "MathDescription" y (ii) demostrar compatibilidad con elenumitempaquete.)
Aquí hay una solución basada en LuaLaTeX. Define tres nuevos entornos llamados MathItemize
, MathEnumerate
y MathDescription
. Los entornos funcionan igual que los entornos "ordinarios" itemize
, enumerate
, y description
, excepto que todo el material (aparte de las etiquetas descriptivas del MathDescription
entorno) se compone en modo matemático en lugar de modo texto.
Si es necesario, \displaystyle
se puede insertar después \item
para representar el contenido de un elemento en modo displaymath. Usar
\item \displaystyle \hfill <formula> \hfill
para centrar el material de visualización de matemáticas.
El código parece funcionar muy bien con el enumitem
paquete. A saber, el siguiente ejemplo carga el enumitem
paquete y cambia algunas de las configuraciones predeterminadas de los entornos itemize
y enumerate
.
Como el artículo y los comentarios del OP no parecen indicar la necesidad de listas anidadas, el código funciona solo para listas no anidadas.
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amsmath} % for "\text" macro
\usepackage{url,hyperref}
\hypersetup{colorlinks=true}
%% Check compatibility with "enumitem" package...
\usepackage{enumitem}
\setlist{itemsep=1ex}
\setlist[itemize]{label=$\star$}
\setlist[enumerate]{label=\roman*), leftmargin=*, widest = iii}
\usepackage{luacode,luatexbase}
%% Lua-side code: Three Boolean variables, two new
%% functions, & calls to assign the new functions to
%% the "process_input_buffer" callback
\begin{luacode}
env_type_1 = false
env_type_2 = false
first_list_item = true
function change_item_properties_itemenum ( line )
if (env_type_1 == true) then
if (first_list_item == true) then
line = string.gsub( line, "\\item", "\\item $" )
first_list_item = false
else
line = string.gsub( line, "\\item", "$ \\item $" )
end
end
return (line)
end
function change_item_properties_desc ( line )
if (env_type_2 == true) then
if (first_list_item == true) then
line = string.gsub( line, "(\\item.-%[.-%])", "%0 $" )
first_list_item = false
else
line = string.gsub( line, "(\\item.-%[.-%])", "$ %0 $" )
end
end
return (line)
end
luatexbase.add_to_callback ( "process_input_buffer",
change_item_properties_itemenum,
"MathModeItemizeEnumerate" )
luatexbase.add_to_callback ( "process_input_buffer",
change_item_properties_desc,
"MathModeDescription" )
\end{luacode}
%% TeX-side code -- Three new environments:
%% MathItemize, MathEnumerate, MathDescription
\newenvironment{MathItemize}%
{\directlua{ env_type_1 = true }
\begin{itemize} }%
{$\end{itemize}
\directlua{ env_type_1 = false
first_list_item = true}}
\newenvironment{MathEnumerate}%
{\directlua{ env_type_1 = true }
\begin{enumerate}}%
{$\end{enumerate}
\directlua{ env_type_1 = false
first_list_item = true}}
\newenvironment{MathDescription}%
{\directlua{ env_type_2 = true }
\begin{description}}%
{$\end{description}
\directlua{ env_type_2 = false
first_list_item = true}}
\begin{document}
\noindent
A \verb+MathItemize+ list
\begin{MathItemize}
\item E=mc^2
\item e^{i\pi}+1=0
\item \text{ducks} + \text{caffeine}
= \text{\url{https://i.stack.imgur.com/GVksc.gif}}
\end{MathItemize}
\bigskip\noindent
An ``ordinary'' \verb+itemize+ list
\begin{itemize}
\item Hello world.
\item Goodbye world.
\end{itemize}
\bigskip\noindent
A \verb+MathEnumerate+ list
\begin{MathEnumerate}
\item a^2+b^2=c^2
\item \displaystyle \hfill \sum_{k=1}^\infty \frac{1}{k^2} = \frac{\pi^2}{6} \hfill
\item 1+1=2
\end{MathEnumerate}
\bigskip\noindent
A \verb+MathDescription+ list
\begin{MathDescription}
\item [Einstein] \hfill E=mc^2 \hfill
\item[Euler] e^{i\pi}+1=0
\item [Pythagoras] a^2+b^2=c^2
\end{MathDescription}
\bigskip\noindent
Finally, an ``ordinary'' \verb+enumerate+ list
\begin{enumerate}[widest=ii]
\item abcdef, and
\item uvwxyz.
\end{enumerate}
\end{document}
Respuesta3
Rápido y sucio:
\documentclass{article}
\makeatletter
\newif\if@mathitemize
\newif\if@closemathitem
\let\orig@item=\item
\renewcommand{\item}{\if@closemathitem$\fi\orig@item\if@mathitemize\@closemathitemtrue$\fi}
\newenvironment{mathitemize}{\@mathitemizetrue\itemize\@closemathitemfalse}{$\enditemize}
\makeatother
\begin{document}
\begin{itemize}
\item test
\item test2
\end{itemize}
\begin{mathitemize}
\item E=mc^2
\end{mathitemize}
\end{document}