
tabular
ist zu array
wie itemize
zu …?
Ich hätte gerne eine Liste wie
\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}
Ich verwende bereits enumitem
, aber ichdenkendieses Paket wird Ihnen sicher weiterhelfen. Natürlich funktioniert jede Lösung :)
Wichtige Abweichungen:
- Was ist mit Anzeigemathematik?
- Was ist mit den anderen
list
Umgebungen – wiedescription
undenumerate
?
Anwendungsfall
Der Anwendungsfall ist eigentlich ziemlich trivial – eine Liste von Gleichungen zu haben. Man könnte das „zum Spaß“ nennen, aber ich habe in der Vergangenheit tatsächlich etwas für Unterrichtsnotizen zusammengehackt, das mir erlaubte, so etwas zu tun (z. B. die Eigenschaften algebraischer Gruppen aufzulisten und zu benennen). Ich hatte gedacht, die Idee sei darauf beschränkt, also habe ich meine (furchtbar chaotische) Lösung nie verallgemeinert, aber ich sehe das Muster immer häufiger in verschiedenen Dokumenten auftauchen, wo es tatsächlichnichtsehen absolut schrecklich aus, wie man erwarten würde. Praktischerweise habe ich keine soliden Beispiele außerdieses Dokument für Anfänger, das auf reddit.com/r/LaTeX aufgetaucht ist.
Antwort1
Hier ist eine Lösung (sie verwendet nicht, aber ich hoffe, sie ist kompatibel mit enumitem
)
Notiz:Ich verstehe nicht, was der OP mit der Anzeigemathematik machen will
Einschränkung:Leere Zeilen werden nicht unterstützt (dieser Code funktioniert nicht)
\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}
Vollständiger Code
\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}
Antwort2
(Antwort geändert, um (i) eine "MathDescription"-Umgebung hinzuzufügen und (ii) die Kompatibilität mit demAufzählungselementPaket.)
Hier ist eine LuaLaTeX-basierte Lösung. Sie definiert drei neue Umgebungen namens MathItemize
, MathEnumerate
, und MathDescription
. Die Umgebungen funktionieren genau wie die „normalen“ itemize
, enumerate
, und description
Umgebungen, mit der Ausnahme, dass alle Angaben (außer den beschreibenden Beschriftungen in der MathDescription
Umgebung) im Mathematikmodus statt im Textmodus gesetzt werden.
Bei Bedarf \displaystyle
kann danach eingefügt werden , \item
um den Inhalt eines Elements im Displaymath-Modus darzustellen. Verwenden Sie
\item \displaystyle \hfill <formula> \hfill
um das Anzeigemathematikmaterial zu zentrieren.
Der Code scheint mit dem enumitem
Paket sehr gut zu funktionieren. Das folgende Beispiel lädt das enumitem
Paket und ändert einige der Standardeinstellungen der itemize
Umgebungen enumerate
.
Da aus den Ausführungen und Kommentaren des OP kein Bedarf für verschachtelte Listen ersichtlich ist, funktioniert der Code nur für nicht verschachtelte Listen.
% !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}
Antwort3
Schnell und dreckig:
\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}