我只想增加方程式环境中的文本大小。我在另一篇文章中发现了这一点:
\NewEnviron{myalign}{%
\begin{align*}
\scalebox{1.5}{$\BODY$}
\end{align*}
}
它似乎可以工作,但是当我包含任何一个时&
,它都无法编译,例如
\begin{align}
x &= 3
\end{align}
有效,但不是
\begin{myalign}
x &= 3
\end{myalign}
答案1
你还会看到
\begin{align*}
\scalebox{1.5}{$x &= 3$}
\end{align*}
失败,这正是你的myalign
产生的结果。问题并不在于你的\NewEnviron
,而是你对如何扩展事物的解释。具体来说,你不能让一个组的开始和结束跨越&
。
从您的定义来看,您似乎想将显示放大align
50%。最好使用这样的定义:
\NewEnviron{myalign}{%
\Large\begin{align*}
\BODY
\end{align*}}
或(无environ
以及最新的 LaTeX)
\NewDocumentEnvironment{myalign}{ b }{%
\Large\begin{align*}
#1
\end{align*}
}{}
\documentclass{article}
\usepackage{amsmath,graphicx}
\NewDocumentEnvironment{myalign}{ b }{%
\Large\begin{align*}
#1
\end{align*}
}{}
\begin{document}
\begin{align*}
f(x) &= ax^2 + bx + c \\
g(x) &= ax^3 + bx^2 + cx + d
\end{align*}
{\Large
\begin{align*}
f(x) &= ax^2 + bx + c \\
g(x) &= ax^3 + bx^2 + cx + d
\end{align*}
}
\begin{myalign}
f(x) &= ax^2 + bx + c \\
g(x) &= ax^3 + bx^2 + cx + d
\end{myalign}
\end{document}
答案2
作为一般规则,您不应该将align
用于单个方程式,而应该将其用于多行对齐。该代码的作者可能喜欢使用align
来代替equation
。
但是该代码不能在多行上运行:您需要将缩放应用于整体align
(但在aligned
形式上)。
以下解决方案并不意味着我发现缩放显示的想法特别有吸引力(“我发现它真的很丑”的轻描淡写)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{lipsum}
\ExplSyntaxOn
\NewDocumentEnvironment{scaledisplay}{O{1.5}mb}
{
\begin{equation*}
\scalebox{#1}{$\antintin_scaledisplay:nn { #2 } { #3 }$}
\end{equation*}
}
{\ignorespacesafterend}
\cs_new_protected:Nn \antintin_scaledisplay:nn
{
\__antintin_scaledisplay_begin:n { #1 }
#2
\__antintin_scaledisplay_end:n { #1 }
}
\cs_new:Nn \__antintin_scaledisplay_begin:n
{
\str_case:nnF { #1 }
{
{equation}{\displaystyle}
{alignat}{\begin{alignedat}{-1}}
{flalign}{\begin{aligned}}
}
{\begin{#1ed}}
}
\cs_new:Nn \__antintin_scaledisplay_end:n
{
\str_case:nnF { #1 }
{
{equation}{}
{alignat}{\end{alignedat}}
{flalign}{\end{aligned}}
}
{\end{#1ed}}
}
\ExplSyntaxOff
\begin{document}
\lipsum[1][1-4]
\begin{scaledisplay}[2]{equation}
A=B
\end{scaledisplay}
\lipsum[2][1-4]
\begin{scaledisplay}{align}
a&=b \\
cc&=ddd
\end{scaledisplay}
\lipsum[3][1-4]
\begin{scaledisplay}{alignat}
a&=b &\quad uuu&=v \\
cc&=ddd &\quad u&=v
\end{scaledisplay}
\lipsum[4][1-4]
\begin{scaledisplay}{gather}
a=b \\
cc=dd
\end{scaledisplay}
\lipsum[5][1-4]
\end{document}
使用字体大小变化而不是缩放(这也尊重fleqn
)。
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{lipsum}
\ExplSyntaxOn
\NewDocumentEnvironment{scaledisplay}{O{\Large}m}
{
\begin{equation*}
\begin{minipage}{\displaywidth}
#1
\legacy_if:nTF { @fleqn } { \setlength{\leftskip}{\mathindent} } { \centering }
$
\__antintin_scaledisplay_begin:n { #2 }
}
{
\__antintin_scaledisplay_end:n { #2 }
$
\end{minipage}
\end{equation*}
\ignorespacesafterend
}
\cs_new_protected:Nn \antintin_scaledisplay:nn
{
\__antintin_scaledisplay_begin:n { #1 }
#2
\__antintin_scaledisplay_end:n { #1 }
}
\cs_new:Nn \__antintin_scaledisplay_begin:n
{
\str_case:nnF { #1 }
{
{equation}{\displaystyle}
{alignat}{\begin{alignedat}{-1}}
{flalign}{\begin{aligned}}
}
{\begin{#1ed}}
}
\cs_new:Nn \__antintin_scaledisplay_end:n
{
\str_case:nnF { #1 }
{
{equation}{}
{alignat}{\end{alignedat}}
{flalign}{\end{aligned}}
}
{\end{#1ed}}
}
\ExplSyntaxOff
\begin{document}
\lipsum[1][1-4]
\begin{scaledisplay}[\LARGE]{equation}
A=B
\end{scaledisplay}
\lipsum[2][1-4]
\begin{scaledisplay}{align}
a&=b \\
cc&=ddd
\end{scaledisplay}
\lipsum[3][1-4]
\begin{scaledisplay}{alignat}
a&=b &\quad uuu&=v \\
cc&=ddd &\quad u&=v
\end{scaledisplay}
\lipsum[4][1-4]
\begin{scaledisplay}{gather}
a=b \\
cc=dd
\end{scaledisplay}
\lipsum[5][1-4]
\end{document}
没有fleqn
选择