
나는 Horner 계획에 대한 표준 코드가 존재한다는 것을 알고 있습니다. 하지만 다음 표를 얻고 싶습니다.
다음 코드를 얻었지만 오른쪽 하단에 작은 수직선이 어떻게 나타나는지 찾을 수 없습니다.
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & &
\end{tabular}
이것에 관해 또 다른 질문이 있습니다. 이제 숫자 11이 왼쪽으로 이동했지만 16 미만이기를 바랍니다.
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
2 & $\downarrow$ & 6 & 16 & 22 \\ \hline
& 3 & 8 & 11 \multicolumn{1}{c|}{} & 12
\end{tabular}
답변1
\documentclass{article}
\begin{document}
$\begin{array}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & \multicolumn{1}{c|}{} &
\end{array}$
\end{document}
두툼하게 드시고 싶으시면
\documentclass{article}
\usepackage{array}
\begin{document}
$\begin{array}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & & \multicolumn{1}{!{\vrule width 1.5pt}c}{}
\end{array}$
\end{document}
답변2
재미삼아 계수도 계산하는 매크로입니다(정수만 허용됨).
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\horner}{smm}
{
\IfBooleanTF{#1}
{ \bool_set_false:N \l_silke_show_bool }
{ \bool_set_true:N \l_silke_show_bool }
\silke_horner:nn { #2 } { #3 }
}
\bool_new:N \l_silke_show_bool
\seq_new:N \l_silke_top_seq
\seq_new:N \l_silke_middle_seq
\seq_new:N \l_silke_bottom_seq
\seq_new:N \l_silke_temp_seq
\int_new:N \l_silke_degree_int
\tl_new:N \l_silke_remainder_tl
\cs_new_protected:Npn \silke_horner:nn #1 #2
{
\seq_set_split:Nnn \l_silke_top_seq { , } { #1 }
\int_set:Nn \l_silke_degree_int { \seq_count:N \l_silke_top_seq }
\seq_clear:N \l_silke_middle_seq
\seq_clear:N \l_silke_bottom_seq
\seq_put_right:Nn \l_silke_middle_seq { \downarrow }
\seq_put_right:Nx \l_silke_bottom_seq
{
\int_to_arabic:n { \seq_item:Nn \l_silke_top_seq { 1 } }
}
\int_step_inline:nnnn { 2 } { 1 } { \l_silke_degree_int }
{
\seq_put_right:Nx \l_silke_middle_seq
{
\int_to_arabic:n { \seq_item:Nn \l_silke_bottom_seq { ##1 - 1 } * #2 }
}
\seq_put_right:Nx \l_silke_bottom_seq
{
\int_to_arabic:n
{
\seq_item:Nn \l_silke_top_seq { ##1 }
+
\seq_item:Nn \l_silke_middle_seq { ##1 }
}
}
}
\silke_print_scheme:n { #2 }
}
\cs_new_protected:Npn \silke_print_scheme:n #1
{
\bool_if:NF \l_silke_show_bool
{
\silke_phantom:N \l_silke_middle_seq
\silke_phantom:N \l_silke_bottom_seq
}
\seq_pop_right:NN \l_silke_bottom_seq \l_silke_remainder_tl
\begin{array}{r | *{\l_silke_degree_int}{r} }
& \seq_use:Nn \l_silke_top_seq { & } \\
#1 & \seq_use:Nn \l_silke_middle_seq { & } \\
\hline
& \seq_use:Nn \l_silke_bottom_seq { & } &
\multicolumn{1}{@{\vline width 1pt}r}{\l_silke_remainder_tl}
\end{array}
}
\cs_new_protected:Npn \silke_phantom:N #1
{
\seq_clear:N \silke_temp_seq
\seq_map_inline:Nn #1 { \seq_put_right:Nn \silke_temp_seq { \phantom{##1} } }
\seq_set_eq:NN #1 \silke_temp_seq
}
\ExplSyntaxOff
\begin{document}
$\horner{3,2,-5,-10}{2}$
$\horner*{3,2,-5,-10}{2}$
$\horner{1,5,10,10,5,1}{-1}$
\end{document}
-variant *
는 공간을 예약하지만 중간 및 아래쪽 행의 숫자를 인쇄하지 않습니다.