动机
当我在多行方程环境中使用数学模式时itemize
,我必须执行以下操作
...
\begin{itemize}
\item $\begin{aligned}[t]
equation stuff
\end{aligned}$
...
\end{itemize}
...
问题
我怎样才能将两个组件$\begin{aligned}[t]
和包装\end{aligned}$
成一个新的符号,例如§
?我想将上面的例子写成
...
\begin{itemize}
\item §equation stuff§
...
\end{itemize}
...
这有利于解决方案的稳健性。
(新符号不一定要为§
。)
答案1
\catcode`§=\active
如果文件声明
\usepackage[utf8]{inputenc}
因为§
在 UTF-8 中是双字节字符。在这种情况下,您可以使用
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{newunicodechar}
\newunicodechar{§}{\mymath}
\def\mymath#1§{$\begin{aligned}[t] #1\end{aligned}$}
\newenvironment{itemalign}
{$\aligned[t]}
{\endaligned$}
\begin{document}
\begin{itemize}
\item §x&=2\\y&=6§
\item \begin{itemalign}x&=2\\y&=6\end{itemalign}
\end{itemize}
\end{document}
inputenc
其优点是还可以与 LuaLaTeX 和 XeLaTeX 一起使用(其中不应出现调用)。
不过,我建议使用新的环境方法。
答案2
如果我是你,我会使用两个不同的宏来打开和关闭环境。我会这样做
\def\ba#1\ea{$\begin{aligned}[t]#1\end{aligned}$}
可以这样用
\begin{itemize}
\item \ba equation stuff \ea
\end{itemize}
答案3
那么如何使其§
活跃起来?
\documentclass{article}
\usepackage{amsmath}
\catcode`§=\active
\def§#1§{$\begin{aligned}[t] #1\end{aligned}$}
\begin{document}
\begin{itemize}
\item §x&=2\\y&=6§
\end{itemize}
\end{document}
然后我们可以扫描一个参数直到下一次出现§
并将其包装在中aligned
。
正如 @egreg 指出的那样,使用pdflatex
和会出现问题inputenc
(另请参阅:使用 \usepackage[utf8]{inputenc} 对 unicode 字符进行 Catcodes)。在这种情况下,一个简单的解决方法是更改§
为例如|
。