我有以下代码:
\begin{align*}
c_s &\equiv b_s^2\\
&\equiv (c_{s-1}^{(2^{k_{s-1}-k_s-1})})^2 \\
&\equiv c_{s-1}^{(2^{k_{s-1}-k_s})} \\
&\equiv c_{s-2}^{(2^{k_{s-2}-k_{s-1}} \cdot 2^{k_{s-1}-k_s})}\\
&\mathrel{\makebox[\widthof{=}]{\vdots}}\\
&\equiv c_0^{(2^{k_{0}-k_{1}} \cdot \cdots \cdot 2^{k_{s-1}-k_s})} \pmod p
\end{align*}
在倒数第三行,我想将参数更改为\widthof
,\equiv
但这样做会导致编译错误。我需要做什么才能达到预期的结果?
答案1
你可以使用
\widthof{$\equiv$}
但有一个更巧妙的方法mathtools
:
\documentclass{article}
\usepackage{amsmath,mathtools}
\begin{document}
\begin{align*}
c_s &\equiv b_s^2\\
&\equiv (c_{s-1}^{(2^{k_{s-1}-k_s-1})})^2 \\
&\equiv c_{s-1}^{(2^{k_{s-1}-k_s})} \\
&\equiv c_{s-2}^{(2^{k_{s-2}-k_{s-1}} \cdot 2^{k_{s-1}-k_s})}\\
&\vdotswithin{\equiv}\\
&\equiv c_0^{(2^{k_{0}-k_{1}} \cdot \cdots \cdot 2^{k_{s-1}-k_s})} \pmod{p}
\end{align*}
\end{document}
空间可能看起来太大,因此\mathtools
还提供\shortvdotswithin
:
\documentclass{article}
\usepackage{amsmath,mathtools}
\mathtoolsset{shortvdotsadjustabove=3pt} % I don't like the default
\begin{document}
\begin{align*}
c_s &\equiv b_s^2\\
&\equiv (c_{s-1}^{(2^{k_{s-1}-k_s-1})})^2 \\
&\equiv c_{s-1}^{(2^{k_{s-1}-k_s})} \\
&\equiv c_{s-2}^{(2^{k_{s-2}-k_{s-1}} \cdot 2^{k_{s-1}-k_s})}\\
&\shortvdotswithin{\equiv}
&\equiv c_0^{(2^{k_{0}-k_{1}} \cdot \cdots \cdot 2^{k_{s-1}-k_s})} \pmod{p}
\end{align*}
\end{document}
请注意,没有\\
之后\shortvdotswithin{\equiv}
。
注意是\pmod{p}
而不是\pmod p
。后者似乎有效,但试一试\pmod 11
你就会知道。
答案2
\widthof
(包)的参数calc
以文本模式设置。数学符号需要数学模式:
\widthof{$\equiv$}
完整示例:
\documentclass{article}
\usepackage{calc}
\usepackage{amsmath}
\begin{document}
\begin{align*}
c_s &\equiv b_s^2\\
&\equiv (c_{s-1}^{(2^{k_{s-1}-k_s-1})})^2 \\
&\equiv c_{s-1}^{(2^{k_{s-1}-k_s})} \\
&\equiv c_{s-2}^{(2^{k_{s-2}-k_{s-1}} \cdot 2^{k_{s-1}-k_s})}\\
&\mathrel{\makebox[\widthof{$\equiv$}]{\vdots}}\\
&\equiv c_0^{(2^{k_{0}-k_{1}} \cdot \cdots \cdot 2^{k_{s-1}-k_s})} \pmod p
\end{align*}
\end{document}