Caso de uso

Caso de uso

tabularé arraycomo itemizeé para…?

Eu gostaria de ter uma 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}

Já estou usando enumitem, mas não usopensaresse pacote será de alguma ajuda. Claro, qualquer solução funcionará :)

Variações importantes:

  • E quanto à matemática de exibição?
  • E os outros listambientes – como descriptione enumerate?

Caso de uso

O caso de uso é bastante trivial, na verdade – ter uma lista de equações. Você poderia chamar isso de 'por diversão', mas no passado eu hackeei algo para anotações de aula que me permitiu fazer algo assim (por exemplo, listar e nomear as propriedades de grupos algébricos). Eu pensei que a ideia estava limitada a isso, então nunca generalizei minha solução (terrivelmente confusa), mas estou vendo o padrão aparecer cada vez mais em vários documentos onde ele realmentenãoparece absolutamente horrível como seria de esperar. Convenientemente, não tenho exemplos sólidos, excetoeste documento para iniciantes que apareceu em reddit.com/r/LaTeX.

Responder1

Aqui está uma solução (não usa, mas espero que seja compatível com enumitem)

Observação:Não entendo o que o OP quer fazer com a matemática de exibição

Limitação:linhas em branco não suportadas (este código não 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}

insira a descrição da imagem aqui

Responder2

(Resposta modificada para (i) adicionar um ambiente "MathDescription" e (ii) demonstrar compatibilidade com oenumitempacote.)

Aqui está uma solução baseada em LuaLaTeX. Ele define três novos ambientes chamados MathItemize, MathEnumeratee MathDescription. Os ambientes funcionam exatamente como os ambientes "comuns" itemize, enumerate, e description, exceto que todo o material (exceto os rótulos descritivos no MathDescriptionambiente) é composto em modo matemático em vez de modo de texto.

Se necessário, \displaystylepode ser inserido depois \itempara renderizar o conteúdo de um item no modo displaymath. Usar

\item \displaystyle \hfill <formula> \hfill 

para centralizar o material de exibição matemática.

O código parece funcionar muito bem com o enumitempacote. A saber, o exemplo abaixo carrega o enumitempacote e altera algumas das configurações padrão dos ambientes itemizee enumerate.

Como a redação e os comentários do OP não parecem indicar a necessidade de listas aninhadas, o código funciona apenas para listas não aninhadas.

insira a descrição da imagem aqui

% !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}

Responder3

Rapido e sujo:

\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}

insira a descrição da imagem aqui

informação relacionada