当连分数沿着一排对角线点排列时,怎样降低连分数的最后一项?
答案1
这是我输入连分数的方法。点必须用前缀输入\cfrac
,因此\cfracdots
对于下面显示的效果,\cfraccdots
对于居中点,\cfracldots
对于低点或\cfracddots
对于标准对角点。
\documentclass{article}
\usepackage{xparse,amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\cfracdots}{ }
{
\rule{0pt}{1.5\baselineskip}
\raisebox{.5\baselineskip}{\enspace$\ddots$\enspace}
}
\NewDocumentCommand{\cfraccdots}{}{\cdots}
\NewDocumentCommand{\cfracddots}{}{\ddots}
\NewDocumentCommand{\cfracldots}{}{\ldots}
\NewDocumentCommand{\xcontfrac}{ s O{c} >{\SplitArgument{1}{;}}m }
{
\IfBooleanTF{#1}
{ \cfrac_inline:nn #3 }
{ \cfrac_map:nnn { #2 } #3 }
}
\cs_new:Npn \cfrac_inline:nn #1 #2
{
\IfNoValueTF { #2 }
{
\tl_use:N \c_cfrac_message_tl
\xcontfrac*{;#1}
}
{
\group_begin:
\cs_set_eq:NN \cfracdots \dots
[\, \tl_if_empty:nTF { #1 } { 0 } { #1 } ; #2 \,]
\group_end:
}
}
\tl_const:Nn \c_cfrac_lbrace_tl { \if_true: { \else: } \fi: }
\tl_const:Nn \c_cfrac_rbrace_tl { \if_false: { \else: } \fi: }
\tl_const:Nn \c_cfrac_strut_tl { \vrule width 0pt depth .3\baselineskip }
\tl_new:N \l_cfrac_left_tl
\tl_new:N \l_cfrac_right_tl
\msg_new:nnn { cfrac } { wrong-syntax }
{
Wrong~syntax~for~\token_to_str:N \xcontfrac,~
assuming~0~in~the~integer~part,~on~line~\msg_line_number:.
}
\cs_new:Npn \cfrac_map:nnn #1 #2 #3
{
\tl_clear:N \l_cfrac_left_tl \tl_clear:N \l_cfrac_right_tl
\IfNoValueTF { #3 }
{
\msg_warning:nn { cfrac } { wrong-syntax }
\xcontfrac[#1]{;#2}
}
{
\tl_if_empty:nTF { #2 }
{ \cfrac_map_aux:nn { #1 } { \exp_not:N \use_none:n , #3 } }
{ \cfrac_map_aux:nn { #1 } { #2 , #3 } }
}
}
\cs_new:Npn \cfrac_map_aux:nn #1 #2
{
\clist_map_inline:nn { #2 }
{
\tl_put_right:Nn \l_cfrac_left_tl { \cfrac_begin:nn { #1 } { ##1 } }
\tl_put_right:Nn \l_cfrac_right_tl { \exp_not:N \c_cfrac_rbrace_tl }
}
\tl_set:Nx \l_cfrac_left_tl
{ \l_cfrac_left_tl \c_cfrac_strut_tl \l_cfrac_right_tl }
\tl_set:Nx \l_cfrac_left_tl { \l_cfrac_left_tl }
\exp_after:wN \use_none:nnnnnn \l_cfrac_left_tl
}
\cs_new:Npn \cfrac_begin:nn #1 #2
{
\exp_not:n
{ + \exp_not:N \cfrac[#1] { 1 } \c_cfrac_lbrace_tl \exp_not:N \mathstrut #2 }
}
\ExplSyntaxOff
\begin{document}
\[
x=\xcontfrac*{;a_1,a_2,\cfracdots,a_n}=
\xcontfrac{;a_1,a_2,\cfracdots,a_n}
\]
\end{document}
如您所见,相同的输入可用于排版连分数的内联形式或扩展形式,只需添加 即可*
。这样可以避免计算括号和缩进输入。
如果整数部分为零,则可以省略;它不会以扩展形式排版(但分号是强制性的)。
答案2
我在这里回答我自己的问题,希望其他人可能会觉得这有用。这个问题与这里,询问如何用对角省略号将连分数中的最后一项放在前面。我感兴趣的是将省略号后面的最后一项稍微降低一点,这样看起来省略号就指向它了。
要做到这一点,只需使用raisebox
:
\begin{equation}
x=
\cfrac{1}{a_1+
\cfrac{1}{a_2+
\cfrac{1}{\ddots \raisebox{-2mm}{$+\cfrac{1}{a_n}$}}}}
\end{equation}