tabular
是与……array
一样itemize
?
我想要一个这样的列表
\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}
我已经在使用enumitem
,但我没有思考这个包会有所帮助。当然,任何解决方案都可以:)
重要变化:
- 显示数学怎么样?
- 那么其他
list
环境怎么样 — — 例如description
和enumerate
?
用例
实际上,用例非常简单——拥有一个方程列表。你可以称之为“为了好玩”,但我过去实际上曾为课堂笔记拼凑了一些东西,让我能够做这样的事情(例如列出并命名代数群的属性)。我曾以为这个想法仅限于此,所以我从未推广我的(非常混乱的)解决方案,但我看到这种模式越来越多地出现在各种文档中,它实际上没有正如你所料,看起来非常糟糕。巧的是,我没有任何确凿的例子,除了这个新手文档出现在 reddit.com/r/LaTeX 上。
答案1
这是一个解决方案(它不使用,但我希望它与兼容enumitem
)
笔记:我不明白原帖者想用显示数学做什么
局限性:不支持空行(此代码不起作用)
\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}
完整代码
\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}
答案2
(答案已修改为(i)添加“MathDescription”环境和(ii)演示与枚举项包裹。)
这是一个基于 LuaLaTeX 的解决方案。它定义了三个新环境,分别称为MathItemize
、MathEnumerate
和MathDescription
。这些环境的工作方式与“普通”的、和环境一样itemize
,enumerate
只是description
所有材料(环境中的描述性标签除外MathDescription
)都是以数学模式而不是文本模式排版的。
如果需要,\displaystyle
可以在后面插入,\item
以便在 displaymath 模式下呈现项目的内容。使用
\item \displaystyle \hfill <formula> \hfill
将显示数学材料置于中心位置。
代码似乎与enumitem
包配合得很好。也就是说,下面的示例加载了包并更改了和环境enumitem
的一些默认设置。itemize
enumerate
由于 OP 的撰写和评论似乎并未表明需要嵌套列表,因此该代码仅适用于非嵌套列表。
% !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}
答案3
快速而肮脏:
\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}