使用tcolorbox
with 时ams equation,
,等式前面有时会有额外的前导空格:
\documentclass[fleqn]{article}
\usepackage[many]{tcolorbox}
\usepackage{amsmath}
\begin{document}
\begin{tcolorbox}[ams equation]
A = B
\end{tcolorbox}
\end{document}
相对
\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{amsmath}
\begin{document}
\begin{tcolorbox}[ams equation]
A = B
\end{tcolorbox}
\end{document}
我怎样才能将其删除或使方程式垂直居中?fleqn
这里的选项似乎很重要。
答案1
\documentclass[fleqn]{article}
\usepackage[many]{tcolorbox}
\usepackage{amsmath}
\begin{document}
\begin{tcolorbox}[ams align]
A = B
\end{tcolorbox}
\end{document}
答案2
该amsmath
包装似乎增加了额外的垂直空间,仅equation
用于和选项fleqn
。我不确定这是错误还是功能,但目前tcolorbox
不知道有或没有 时空间设置有何不同fleqn
。
下面的补丁似乎可以解决问题:
\makeatletter
\if@fleqn
\tcbset{%
ams equation upper/.style={before upper=\tcb@hack@amsmath\equation,after upper=\endequation},%
ams equation lower/.style={before lower=\tcb@hack@amsmath\equation,after lower=\endequation},%
ams equation* upper/.style={before upper=\tcb@hack@amsmath\csname equation*\endcsname,after upper=\endequation},%
ams equation* lower/.style={before lower=\tcb@hack@amsmath\csname equation*\endcsname,after lower=\endequation}%
}
\fi
\makeatother
综上所述,得出:
\documentclass[fleqn]{article}
%\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{amsmath}
\makeatletter
\if@fleqn
\tcbset{%
ams equation upper/.style={before upper=\tcb@hack@amsmath\equation,after upper=\endequation},%
ams equation lower/.style={before lower=\tcb@hack@amsmath\equation,after lower=\endequation},%
ams equation* upper/.style={before upper=\tcb@hack@amsmath\csname equation*\endcsname,after upper=\endequation},%
ams equation* lower/.style={before lower=\tcb@hack@amsmath\csname equation*\endcsname,after lower=\endequation}%
}
\fi
\makeatother
\begin{document}
abc
\begin{equation}
A = B
\end{equation}
\begin{tcolorbox}[ams equation]
A = B
\end{tcolorbox}
\begin{tcolorbox}[ams align]
A = B
\end{tcolorbox}
\end{document}
此代码在有或没有的情况下都可以工作fleqn
。