是否可以创建一个具有必需参数的环境,该环境将仅使用xparse
不带包的包来表示环境中的一些变化environ
?
更具体地说,我想创建一个用于积分替换的环境,该环境将接收必需的参数:line
,brace
或wave
。或者至少l
,b
,w
如果无法用文字表达的话。
\begin{subs}{MY ARGUMENT}
...
\end{subs}
以下是其工作原理的示例:
1․|
两侧均可使用
\begin{equation}
\int =
\begin{subs}{l}
...
\end{subs}
\end{equation}
2․用途[
和]
\begin{equation}
\int =
\begin{subs}{b}
...
\end{subs}
\end{equation}
3․用途\lwavy
和\rwavy
\begin{equation}
\int =
\begin{subs}{w}
...
\end{subs}
\end{equation}
另外,如果你没有指定任何内容,它使用波浪线会很好
\begin{subs}
...
\end{subs}
仅供参考,这就是目前的硬编码方式:
\;\left \lwavy \:\begin{aligned}
{
...
}
\end{aligned}\;\right \rwavy \;
PS 不要介意截图上的那些随机内容,这只是为了演示。
答案1
不吸收内容也可以做到这一点。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
% from https://tex.stackexchange.com/a/347545/4427
\DeclareFontFamily{OMX}{MnSymbolE}{}
\DeclareFontShape{OMX}{MnSymbolE}{m}{n}{
<-6> MnSymbolE5
<6-7> MnSymbolE6
<7-8> MnSymbolE7
<8-9> MnSymbolE8
<9-10> MnSymbolE9
<10-12> MnSymbolE10
<12-> MnSymbolE12}{}
\DeclareFontShape{OMX}{MnSymbolE}{b}{n}{
<-6> MnSymbolE-Bold5
<6-7> MnSymbolE-Bold6
<7-8> MnSymbolE-Bold7
<8-9> MnSymbolE-Bold8
<9-10> MnSymbolE-Bold9
<10-12> MnSymbolE-Bold10
<12-> MnSymbolE-Bold12}{}
\DeclareSymbolFont{mnlargesymbols}{OMX}{MnSymbolE}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{MnSymbolE}{b}{n}
\DeclareMathDelimiter{\lwavy}{\mathopen}{mnlargesymbols}{'136}{mnlargesymbols}{'136}
\DeclareMathDelimiter{\rwavy}{\mathclose}{mnlargesymbols}{'136}{mnlargesymbols}{'136}
\ExplSyntaxOn
\NewDocumentEnvironment{subs}{O{wave}}
{
\left
\str_case:nn { #1 }
{
{line}{|}
{brack}{[}
{wave}{\lwavy}
}
\begin{aligned}
}
{
\end{aligned}
\right
\str_case:nn { #1 }
{
{line}{|}
{brack}{]}
{wave}{\rwavy}
}
}
\ExplSyntaxOff
\begin{document}
\[
\int=\begin{subs}
& y=5+x && dt=dx \\
& dy=dx && \text{I love unicorns} \\
& \text{My text here} && z=\sqrt{y-5x^2}
\end{subs}
\]
\[
\int=\begin{subs}[line]
& y=5+x && dt=dx \\
& dy=dx && \text{I love unicorns} \\
& \text{My text here} && z=\sqrt{y-5x^2}
\end{subs}
\]
\end{document}