我有一个数组,我想将此数组转换为带有答案的a & b & c & d & e & f & g
形式。egreg 帮助我编写了此代码。非常感谢。sqrt{a x + b} + sqrt{c x + d} = e
S=\{f,g\}
\documentclass[,a4paper,12pt]{article}
\usepackage{fouriernc}
\usepackage[unicode]{hyperref}
\usepackage{amsmath}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{longtable}
\makeatletter
\newcommand{\changearray}[1]{%
\begingroup
\gdef\@changearraybody{}%
\makerow#1\relax
\begin{longtable}{@{}ll@{}}
\@changearraybody
\end{longtable}
\endgroup
}
\makeatletter
\def\makerow{\@ifnextchar\relax{}{\@makerow}}
\def\@makerow#1\\{%
\g@addto@macro\@changearraybody{%
$\sqrt{\@checkone{#1}x+#2}-\sqrt{\@checkone{#3}x+#4}=#5$
&
\hfill Answer. $S=\{#6,#7 \}$
\\}
\makerow
}
\def\@checkone#1{\edef\next{\zap@space#1 \@empty}\ifx\next\@fixedone\else#1\fi}
\def\@fixedone{1}
\makeatother
\begin{document}
\section{All negative coeffients}
\changearray{-10 & -6 & -9 & -8 & 1 & -33 & -1
\\}
How can I obmit the sign $+$ in front of the sign $-$? And then, we get
\[\sqrt{-10x-6}+\sqrt{-9x-8}=1.\]
\section{$a=-1$ or $c=-1$}
\changearray{-1 & -6 & -9 & 8 & 1 & -3 & -1
\\}
How can I obmit the number $1$ in front of the sign $-$? and get $\sqrt{-x-6}+\sqrt{-9x+8}=1$
\section{$b=0$ or $d=0$}
\changearray{ -1 & 0 & 1 & 2 & 2 & -1 & 7
\\}
How to get
\[\sqrt{-x}+\sqrt{x+2}=2\]
\end{document}
但有些情况我无法解决。
- 第一种情况。所有负系数,例如
-10 & -6 & -9 & -8 & 1 & -33 & -1
,我得到
我怎样才能得到该形式的方程式?
- 第二种情况
a = -1
或者c=-1
我用过\changearray{-1 & -6 & -9 & 8 & 1 & -3 & -1 \\}
。我得到了
我怎样才能得到该形式的方程式?
- 第三种情况
b = 0
或者d = 0
。
我用过
\changearray{ -1 & 0 & 1 & 2 & 2 & -1 & 7 \\}
,我得到了
我怎样才能得到该形式的方程式?
答案1
您可以使用\checkval
宏。我的代码直接打印方程式(没有数字表等),因此您可以根据需要进行修改。
\def\changearray#1{\changearrayA #1\\\\\end}
\def\changearrayA#1\\{\ifx\end#1\end \changearrayC \else
\endgraf$\changearrayB#1&$\endgraf \expandafter\changearrayA \fi}
\def\changearrayB#1&{%
\sqrt{\checkval{#1} =1:{}, =-1:{-}, =#1:{#1},; x
\checkval{#2} =0:{}, <0:{#2}, =#2:{+#2},;}
-\sqrt{\checkval{#3} =1:{}, =-1:{-}, =#3:{#3},; x
\checkval{#4} =0:{}, <0:{#4}, =#4:{+#4},;}
=#5 \quad \hbox{Answer. } S = \{#6,#7\}.
}
\def\changearrayC#1\end{\fi}
\def\checkval#1{\def\tmp{#1}\let\next=\checkvalA \checkvalA}
\def\checkvalA #1:#2,{\ifnum \tmp#1 #2\def\next##1;{}\fi \next}
\changearray{-10 & -6 & -9 & -8 & 1 & -33 & -1 \\
-1 & -6 & -9 & 8 & 1 & -3 & -1 \\
-1 & 0 & 1 & 2 & 2 & -1 & 7}