v 0 = 0 ; a 0 = − a g ; for i = 1 to N do , [ X J i , s i ] = jcalc ( j t y p e ( i ) , q i ) , i X λ ( i ) = X J i X T ( i ) , v i = i X λ ( i ) v λ ( i ) + s i q ˙ i , a i = i X λ ( i ) a λ ( i ) + s i q ¨ i + v i × s i q ˙ i , f i = I i a i + v i × ∗ I i v i ; end ; for i = N to 1 do , τ i = s i T f i , if λ ( i ) ≠ 0 then , f λ ( i ) = f λ ( i ) + λ ( i ) X i T f i , end , end . \begin{aligned} &\boldsymbol{v}_0 = 0 \ ; \\ &\boldsymbol{a}_0 = -\boldsymbol{a}_g \ ; \\ &\text{for } i = 1 \text{ to } N \text{ do} \ , \\ &\quad [X_{J_i}, \boldsymbol{s}_i] = \text{jcalc}(jtype(i), q_i) \ , \\ &\quad {}^iX_{\lambda(i)} = X_{J_i}X_T(i) \ , \\ &\quad \boldsymbol{v}_i = {}^iX_{\lambda(i)}\boldsymbol{v}_{\lambda(i)} + \boldsymbol{s}_i\dot{q}_i \ , \\ &\quad \boldsymbol{a}_i = {}^iX_{\lambda(i)}\boldsymbol{a}_{\lambda(i)} + \boldsymbol{s}_i\ddot{q}_i + \boldsymbol{v}_i \times \boldsymbol{s}_i\dot{q}_i \ , \\ &\quad \boldsymbol{f}_i = \boldsymbol{I}_i\boldsymbol{a}_i + \boldsymbol{v}_i \times^* \boldsymbol{I}_i\boldsymbol{v}_i \ ; \\ &\text{end} \ ; \\ &\text{for } i = N \text{ to } 1 \text{ do} \ , \\ &\quad \tau_i = \boldsymbol{s}_i^{\mathrm{T}} \boldsymbol{f}_i \ , \\ &\quad \text{if } \lambda(i) \neq 0 \text{ then} \ , \\ &\qquad \boldsymbol{f}_{\lambda(i)} = \boldsymbol{f}_{\lambda(i)} + {}^{\lambda(i)}X_i^{\mathrm{T}} \boldsymbol{f}_i \ , \\ &\quad \text{end} \ , \\ &\text{end} \ . \end{aligned} v0=0 ;a0=−ag ;for i=1 to N do ,[XJi,si]=jcalc(jtype(i),qi) ,iXλ(i)=XJiXT(i) ,vi=iXλ(i)vλ(i)+siq˙i ,ai=iXλ(i)aλ(i)+siq¨i+vi×siq˙i ,fi=Iiai+vi×∗Iivi ;end ;for i=N to 1 do ,τi=siTfi ,if λ(i)=0 then ,fλ(i)=fλ(i)+λ(i)XiTfi ,end ,end .
明白了!你提到的是在 Vscode 中渲染的效果没有缩进,而公式伪代码的缩进需要以数学公式的形式正确显示。我们可以通过调整公式的格式来实现缩进效果,同时确保公式在 Markdown 或 LaTeX 中正确渲染。
以下是调整后的公式伪代码,使用 LaTeX 的 \quad
和 \qquad
来实现缩进效果:
\[
\begin{aligned}
&\boldsymbol{v}_0 = 0 \ ; \\
&\boldsymbol{a}_0 = -\boldsymbol{a}_g \ ; \\
&\text{for } i = 1 \text{ to } N \text{ do} \ , \\
&\quad [X_{J_i}, \boldsymbol{s}_i] = \text{jcalc}(jtype(i), q_i) \ , \\
&\quad {}^iX_{\lambda(i)} = X_{J_i}X_T(i) \ , \\
&\quad \boldsymbol{v}_i = {}^iX_{\lambda(i)}\boldsymbol{v}_{\lambda(i)} + \boldsymbol{s}_i\dot{q}_i \ , \\
&\quad \boldsymbol{a}_i = {}^iX_{\lambda(i)}\boldsymbol{a}_{\lambda(i)} + \boldsymbol{s}_i\ddot{q}_i + \boldsymbol{v}_i \times \boldsymbol{s}_i\dot{q}_i \ , \\
&\quad \boldsymbol{f}_i = \boldsymbol{I}_i\boldsymbol{a}_i + \boldsymbol{v}_i \times^* \boldsymbol{I}_i\boldsymbol{v}_i \ ; \\
&\text{end} \ ; \\
&\text{for } i = N \text{ to } 1 \text{ do} \ , \\
&\quad \tau_i = \boldsymbol{s}_i^{\mathrm{T}} \boldsymbol{f}_i \ , \\
&\quad \text{if } \lambda(i) \neq 0 \text{ then} \ , \\
&\qquad \boldsymbol{f}_{\lambda(i)} = \boldsymbol{f}_{\lambda(i)} + {}^{\lambda(i)}X_i^{\mathrm{T}} \boldsymbol{f}_i \ , \\
&\quad \text{end} \ , \\
&\text{end} \ .
\end{aligned}
\]
说明:
\quad
:用于表示一级缩进(相当于 1 个空格宽度)。\qquad
:用于表示二级缩进(相当于 2 个空格宽度)。aligned
环境:用于对齐公式,确保每一行的公式在等号或其他符号处对齐。\text{}
:用于在公式中插入文本(如for
、if
等关键字)。
渲染效果:
- 初始化部分(
\(\boldsymbol{v}_0\)
和\(\boldsymbol{a}_0\)
)没有缩进。 - 第一个
for
循环内的语句使用\quad
缩进。 - 第二个
for
循环内的语句使用\quad
缩进,而嵌套的if
语句使用\qquad
进一步缩进。
在 Vscode 中渲染:
如果你使用的是 Markdown 文件(.md
),可以直接将上述代码粘贴到 Markdown 中,Vscode 的 Markdown 预览会正确渲染公式和缩进。如果你使用的是 LaTeX 文件(.tex
),也可以直接使用上述代码。