当我想排版数学时,我使用以下代码,该代码由 Stephen B. Segletes 编写,但当我尝试在环境中使用它时遇到了问题cases
。代码没有问题,cases
因为当我在外部使用它时\SS
它可以正常工作。为什么会发生这种情况?我该如何修复它?
\documentclass[12pt]{article}
\usepackage[top=0.3in, bottom=1.2in, left=0.8in, right=0.8in]{geometry}
\usepackage{multicol}
\setlength{\parindent}{0cm}
\usepackage{xltxtra}
\usepackage{xgreek}
\setmainfont[Mapping=tex-text]{GFSDidot.otf}
\setsansfont[Mapping=tex-text]{GFSDidot.otf}
\usepackage{amsmath}
\usepackage{unicode-math}
\everymath{\displaystyle}
\usepackage[usestackEOL]{stackengine}
\stackMath
\def\stackalignment{l}
\setstackgap{S}{10pt}
\def\SS#1{\noindent\addstackgap[3pt]{\Shortstack{#1}}\vspace{2ex}\par\vfil}
\newcommand{\3}{\vspace{0.3cm}}
\title{}
\author{}
\date{}
\begin{document}
\SS{
\vec{H}_{1}=\vec{H}_{3}=0\Rightarrow \vec{B}_{1}=\vec{B}_{3}=0\\
\vec{H}_{2}=K_{0}\hat{x}\\
\vec{B}_{2}=\begin{cases}
\mu_{1}(z)\vec{H}=\mu_{1}(z)K_{0}\hat{x} & 0<z<h_{1}\\
\mu_{2}H=\mu_{2}K_{0}\hat{x} & h_{1}<z<h
\end{cases}
}
\end{document}
答案1
只需在 周围添加括号cases
即可。但是,我不明白使用另一个包的目的是什么。这是一个示例,我删除了所有不必要的东西(以及最后的\vfil
)。我重命名了您的个人命令,因为它是非常重新定义是个坏主意\SS
。
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage[usestackEOL]{stackengine}
\stackMath
\def\stackalignment{l}
\setstackgap{S}{10pt}
\newcommand\AdamSS[1]{\noindent\addstackgap[3pt]{\Shortstack{#1}}\vspace{2ex}\par}%\vfil}
\begin{document}
\AdamSS{
\vec{H}_{1}=\vec{H}_{3}=0\Rightarrow \vec{B}_{1}=\vec{B}_{3}=0\\
\vec{H}_{2}=K_{0}\hat{x}\\
\vec{B}_{2}={\begin{cases}
\mu_{1}(z)\vec{H}=\mu_{1}(z)K_{0}\hat{x} & 0<z<h_{1}\\
\mu_{2}H=\mu_{2}K_{0}\hat{x} & h_{1}<z<h
\end{cases}}
}
\noindent$\!\begin{aligned}
\vec{H}_{1}&=\vec{H}_{3}=0\Rightarrow \vec{B}_{1}=\vec{B}_{3}=0\\
\vec{H}_{2}&=K_{0}\hat{x}\\
\vec{B}_{2}&=
\begin{cases}
\mu_{1}(z)\vec{H}=\mu_{1}(z)K_{0}\hat{x} & 0<z<h_{1}\\
\mu_{2}H=\mu_{2}K_{0}\hat{x} & h_{1}<z<h
\end{cases}
\end{aligned}$
\end{document}