在堆栈中使用案例环境时出现的问题

在堆栈中使用案例环境时出现的问题

当我想排版数学时,我使用以下代码,该代码由 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}

在此处输入图片描述

相关内容