如何在对角线点之后降低连分数的最后一个项?

如何在对角线点之后降低连分数的最后一个项?

当连分数沿着一排对角线点排列时,怎样降低连分数的最后一项?

答案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}

相关内容