% This is tabularcalc_doc_vn.tex, the vietnamese manual of tabularcalc % % Tác giả: Christian Tellechea 2009 % Email: unbonpetit@gmail.com % Dịch bởi: Lê Hữu Äiá»n Khuê % Email: huudienkhue.le@gmail.com %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper,10pt]{article} \usepackage[utf8]{vietnam} %\usepackage{vntex} \usepackage[T1,T5]{fontenc} \usepackage[unicode,a4paper,dvips,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,bookmarks=true,pdfauthor={Christian TELLECHEA. Translator: Le Huu Dien Khue},pdftitle={tabularcalc},pdfsubject={package pour construction d'un tableau de valeurs},pdfkeywords={tabularcalc},pdfcreator={LaTeX},pdftex]{hyperref} \usepackage[a4paper,dvips,margin=2.75cm]{geometry} \usepackage[autolanguage]{numprint} \usepackage{colortbl} \usepackage{xcolor} \usepackage{lmodern} \usepackage{xspace} \usepackage{listings} \usepackage{tabularcalc} \usepackage[bottom]{footmisc} \makeatletter \definecolor{tc@bckgcolor}{rgb}{1,1,0.875} \definecolor{tc@keywordstc}{rgb}{0.7,0,0} \definecolor{tc@keywordslatex}{rgb}{0,0,1} \definecolor{tc@arguments}{rgb}{0,0,0} \definecolor{tc@comments}{rgb}{0.5,0.5,0.5} \lstset{% language=[AlLaTeX]TeX,% float=hbp,% basicstyle=\footnotesize\ttfamily,% identifierstyle=\color{tc@arguments},% keywordstyle=\color{tc@keywordslatex},% commentstyle=\itshape\color{tc@comments},% columns=fixed,% tabsize=4,% frame=single,% extendedchars=false,% showspaces=false,% showstringspaces=false,% numbers=left,% numberstyle=\tiny\ttfamily,% breaklines=true,% breakindent=3em,% backgroundcolor=\color{tc@bckgcolor},% breakautoindent=true,% captionpos=t,% xleftmargin=1em,% xrightmargin=1em,% lineskip=0pt,% numbersep=1em, classoffset=1,% morekeywords={% các lệnh và macro cá»§a tabularcalc tccol,tclin,% htablecalc,vtablecalc,% tcnoshowmark,tcatbeginrow,tcresetcellcode,edefcellcode,defcellcode,% tcsethrule,tcresethrule,tcsetcoltype,tcresetcoltype,% tcprintvalue,tcprintresult,tclistsep,% tcprintroundresult,tcprintroundvalue,tcwritetofile},% keywordstyle=\color{tc@keywordstc},% classoffset=0} \makeatother \newcommand\guill[1]{\og{}#1\fg{}} \newcommand\argu[1]{$\langle$\textit{#1}$\rangle$} \newcommand\ARGU[1]{\texttt{\{}\argu{#1}\texttt{\}}} \newcommand\arguC[1]{\texttt{[}\argu{#1}\texttt{]}} \newcommand\tbcalc{\textsf{tabularcalc}\xspace} \newcommand\verbinline{\lstinline[breaklines=false,basicstyle=\normalsize\ttfamily]} \newcommand\mywidth{0.85\linewidth} \begin{document} \setlength{\parindent}{0pt} \begin{titlepage} \null\par\vfill \begin{center} \begin{minipage}{0.75\linewidth} \begin{center} \Huge\bfseries \tbcalc\par\vspace{5pt} \small v\tabularcalcversion\par\vspace{25pt} \normalsize Hướng dẫn sá» dụng \end{center} \end{minipage} \end{center} \vspace{1cm} \begin{center} Christian {\sc Tellechea}\par\small \href{mailto:unbonpetit@gmail.com}{\texttt{\textbf{unbonpetit@gmail.com}}}\par\vspace{5pt} Dịch bởi Lê Hữu Äiá»n Khuê\par\small \href{mailto:huudienkhue.le@gmail.com}{\texttt{\textbf{huudienkhue.le@gmail.com}}}\par\vspace{5pt} 20.4.2009 \end{center} \vfill\hrulefill \begin{center} \begin{minipage}{0.85\linewidth} \noindent \hfill\textbf{\textit{Tóm tắt}}\hfill{}\medskip\par ÄÆ°á»£c trang bị bởi má»™t danh sách các số và má»™t (hoặc nhiá»u) công thức (hay hà m số) má»™t biến, \tbcalc giúp chúng ta xây dá»±ng các bảng giá trị bằng các cú pháp rất đơn giản. "Bảng giá trị" ở đây được hiểu là bảng có hà ng đầu tiên chứa các giá trị cá»§a biến số và các hà ng còn lại chứa giá trị cá»§a các hà m theo biến số, tương ứng vá»›i má»—i giá trị cá»§a biến số : \begin{center} \tcsethrule{\hline}{\hline\hline}{\hline} \tcsetcoltype{|c|}{>{\centering\arraybackslash}m{1.5cm}|} \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} Má»™t bảng có thể được xây dá»±ng theo chiá»u ngang hay chiá»u dá»c và có thể thay đổi theo ý muốn (chiá»u cao cá»§a má»™t ô, kiểu hà ng, kiểu cá»™t,...). HÆ¡n nữa, chúng ta có thể ẩn Ä‘i giá trị cá»§a má»™t (hay má»™t số) ô bất kì. Ngoà i ra, đối vá»›i má»—i ô, bất kì dòng lệnh nà o cá»§a \TeX{} cÅ©ng Ä‘á»u có hiệu lá»±c, do đó gói nà y còn có nhiá»u chức năng khác nữa, tuỳ theo ý muốn cá»§a ngưá»i sá» dụng. \smallskip \end{minipage} \end{center} \hrulefill\vfill{} \end{titlepage} \tableofcontents \bigskip Tác giả xin gá»i lá»i cảm Æ¡n đến Derek~\textsc{O'Connor}, ngưá»i đã thá» nghiệm phiên bản bêta và đóng góp rất nhiá»u ý kiến có giá trị. \section{Mở đầu} \subsection{Giá»›i thiệu} Gói \tbcalc cho phép xây dá»±ng rất dá»… dà ng các bảng giá trị cá»§a hà m số má»™t biến ứng vá»›i má»—i giá trị cá»§a biến. Các bảng được trình bà y dưới môi trưá»ng chuẩn cá»§a \verb|tabular| và các giá trị được hiển thị dưới dạng tháºp phân. \tbcalc cần đến \LaTeX và các gói phụ trợ \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}}, \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xstring/}{\texttt{\textbf{xstring}}} và \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}}. Gói nà y được tạo ra hoà n toà n không phải để cạnh tranh vá»›i \href{http://www.ctan.org/tex-archive/graphics/pgf/contrib/pgfplots/}{\texttt{\textbf{pgfplotstable}}}, má»™t gói rất tuyệt vá»i cá»§a Christian~\textsc{Feuers\"anger}. So vá»›i \tbcalc, gói nà y có thể nói là mạnh hÆ¡n nhiá»u, tuy nhiên các câu lệnh cá»§a nó khá phức tạp. Còn \tbcalc, mặc dù khá giản dị, nhưng lại rất dá»… sá» dụng.\medskip Vá» mặt hiển thị kết quả vá»›i các chữ số tháºp phân, theo tác giả gói \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}} là tốt nhất, do đó nó cÅ©ng được gá»i và o theo mặc định. Chúng ta cÅ©ng có thể thay đổi gói nà y bằng má»™t gói khác, hoặc thay đổi cách hiển thị các giá trị theo ý muốn (xem trang~\pageref{persoaffichage}).\medskip \subsection{Vá» gói \ttfamily fp} Vá» mặt tÃnh toán, vá»›i \TeX{}, \tbcalc không thá»±c hiện việc tÃnh trá»±c tiếp giá trị cá»§a các biểu thức, chẳng hạn như \verb|2*x*x-5*x+7| khi \hbox{\verb|x = 2.7|}, mà nó sẽ gá»i thêm má»™t "máy tÃnh" phụ trợ là \verb=fp=.\smallskip Chúng ta có thể sá» dụng cú pháp \emph{trung tố} (infix) hoặc \emph{háºu tố} (postfix) để nháºp và o các hà m số. Xem thêm táºp tin \href{http://www.ctan.org/get/macros/latex/contrib/fp/README}{\texttt{\textbf{README}}} cá»§a gói \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} để hiểu rõ thêm hai khái niệm trên cÅ©ng như danh sách đầy đủ các hà m số có thể sá» dụng.\medskip Tuy nhiên, khi là m việc vá»›i hà m số mÅ©, gói nà y có hai lá»—i sau đây : \begin{itemize} \item thêm và o má»™t khoảng trống không như ý muốn; \item để tÃnh $a^b$, \verb=fp= sá» dụng công thức $a^b=\mathrm{e}^{b\ln a}$. Trong trưá»ng hợp $b$ là má»™t số nguyên và $a$ là má»™t số âm, chẳng hạn $(-3)^2=\mathrm{e}^{2\ln(-3)}$, thì rõ rà ng nó sẽ không tÃnh được, bởi vì lô-ga-rÃt cá»§a má»™t số âm là không xác định. \end{itemize}\smallskip Äể sá»a hai lá»—i nà y, chúng ta cần thêm và o tuỳ chá»n \verb=fixFPpow= như sau : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \usepackage[fixFPpow]{tabularcalc} \end{lstlisting} \end{minipage} \end{center} \subsection{Má»™t số Ä‘iểm má»›i} Phiên bản trước cá»§a \tbcalc không tương thÃch được vá»›i má»™t số gói khác bởi vì tên cá»§a má»™t số macro bị trùng. Do váºy, để tránh vấn đỠtương tá»± vá»›i phiên bản nà y, tác giả đã quyết định đổi tên cá»§a tất cả các macro bằng cách thêm và o "\verb-tc-" (viết tắt cá»§a \textsf{\textbf{t}abular\textbf{c}alc}) ở trước tên cÅ©, như trong bảng sau : \begin{center} \begin{tabular}{rl} Tên cÅ©&Tên má»›i \\\hline \verb=\noshowmark=&\verb=\tcnoshowmark=\\ \verb=\startline=&\verb=\tcatbeginrow=\\ \verb=\resetcellcode=&\verb=\tcresetcellcode=\\ \verb=\listsep=&\verb=\tclistsep=\\ \verb=\printvalue=&\verb=\tcprintvalue=\\ \verb=\printresult=&\verb=\tcprintresult=\\ \verb=\sethrule=&\verb=\tcsethrule=\\ \verb=\resethrule=&\verb=\tcresethrule=\\ \verb=\setcoltype=&\verb=\tcsetcoltype=\\ \verb=\resetcoltype=&\verb=\tcresetcoltype= \end{tabular} \end{center} Các Ä‘iểm má»›i khác :\parindent2em \begin{itemize} \item "máy tÃnh" \verb=pgfmath=, do độ chÃnh xác kém, đã được thay thế bằng \verb=fp=; \item các giá trị cá»§a biến có thể được nháºp và o má»™t cách tổng quát bằng công thức; \item kể từ bây giá», chúng ta có thể soạn thảo lệnh cá»§a má»™t bảng trong má»™t táºp tin riêng, Ä‘iá»u nà y giúp ta sá»a đổi dá»… dà ng các bảng. \end{itemize}\parindent0pt \subsection{Thuáºt ngữ} Trong phần tiếp theo cá»§a bà i viết, để bạn Ä‘á»c dá»… theo dõi, chúng ta quy ước những số mà u đỠlà các "{\color{red}giá trị}" cá»§a biến, mà u xanh là "{\color{blue}kết quả}" (giá trị cần tÃnh), các biểu thức mà u nâu là các "{\color{brown}nhãn}" (biểu thức cần tÃnh) và ô góc trên cùng bên trái cá»§a má»™t bảng gá»i là "ô (0,0)", chẳng hạn như hai bảng sau đây: \begin{minipage}{0.5\linewidth} \begin{center} {\scriptsize Bảng ngang}\par\nobreak\smallskip \def\tcprintvalue#1{\color{red}$#1$} \def\tcprintresult#1#2{\color{blue}$#1$} \htablecalc[3]{ô (0,0)}{x=-5,-1,0,3,10}{\color{brown}$x$}{x}{\color{brown}$2x$}{2*x}{\color{brown}$3x$}{3*x} \end{center} \end{minipage}% \begin{minipage}{0.5\linewidth} \begin{center} {\scriptsize Bảng dá»c}\par\nobreak\smallskip \def\tcprintvalue#1{\color{red}$#1$} \def\tcprintresult#1#2{\color{blue}$#1$} \vtablecalc[3]{ô (0,0)}{x=-5,-1,0,3,10}{\color{brown}$x$}{x}{\color{brown}$2x$}{2*x}{\color{brown}$3x$}{3*x} \end{center} \end{minipage} \section{Chức năng cÆ¡ bản} \subsection{Bảng ngang} \label{bangngang} Lệnh \verbinline|\htablecalc| cho phép tạo ra má»™t bảng ngang trong đó hà ng đầu tiên chứa giá trị cá»§a biến và các hà ng còn lại chứa các kết quả. Cú pháp:\smallskip \setbox0=\hbox{\verbinline|\htablecalc|\arguC{nb}} \verbinline|\htablecalc|\arguC{nb}\ARGU{ô (0,0)}\argu{biến=danh sách}\par \hskip\wd0\ARGU{nhãn 1}\ARGU{công thức 1}\par \hskip\wd0\ARGU{nhãn 2}\ARGU{công thức 2}\par \hskip\wd0\ldots\par \hskip\wd0\ARGU{nhãn n}\ARGU{công thức n}\medskip trong đó:\parindent1.5em \begin{itemize} \item \argu{nb} là số công thức cần tÃnh (bằng 1 theo mặc định); \item \argu{ô (0,0)} là ná»™i dụng cá»§a ô (0,0); \item \argu{biến} là tên cá»§a biến, tên nà y sẽ được sá» dụng trong các \argu{công thức}. \item \argu{danh sách} là danh sách các giá trị cá»§a biến, cách nhau bởi dấu phẩy (Chú ý: dấu phẩy trong các số tháºp phân phải được thay bằng dấu chấm), nếu có hai dấu phẩy liên tiếp nhau thì sẽ có má»™t cá»™t trống được in ra. Chúng ta có thể thay dấu phẩy bằng má»™t kà tá»± khác, chẳng hạn vá»›i "|", ta dùng lệnh \verbinline=\def\tclistsep{|}=. \item \argu{nhãn i} là nhãn thứ i; \item \argu{công thức i} là công thức thứ i cần tÃnh (tương ứng vá»›i hà ng thứ i). \end{itemize}\parindent0em \medskip Dưới đây là má»™t và dụ vá» bảng ở trang đầu tiên cá»§a tà i liệu : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{lstlisting} \end{minipage} \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} Chúng ta thấy rằng bảng nà y không hoà n toà n giống vá»›i bảng ở trang đầu : độ rá»™ng cá»§a các cá»™t không bằng nhau và đưá»ng kẻ ngang dưới hà ng thứ nhất cÅ©ng khác nhau. Chúng ta sẽ tìm hiểu vá» cách thay đổi các đặc Ä‘iểm nà y trong phần sau cá»§a tà i liệu. \subsection{Bảng dá»c} Lệnh \verbinline|\vtablecalc| cho phép tạo ra má»™t bảng dá»c trong đó cá»™t đầu tiên là giá trị cá»§a biến và các cá»™t còn lại là các kết quả. Cú pháp :\smallskip \setbox0=\hbox{\verbinline|\vtablecalc|\arguC{nb}} \verbinline|\vtablecalc|\arguC{nb}\ARGU{ô (0,0)}\argu{biến=danh sách}\par \hskip\wd0\ARGU{nhãn 1}\ARGU{công thức 1}\par \hskip\wd0\ARGU{nhãn 2}\ARGU{công thức 2}\par \hskip\wd0\ldots\par \hskip\wd0\ARGU{nhãn n}\ARGU{công thức n}\medskip trong đó các khái niệm trong cú pháp trên Ä‘á»u được xác định như trong mục \ref{bangngang} \emph{Bảng ngang}. \medskip Sau đây là và dụ vá» má»™t bảng dá»c cá»§a hai bảng trước, trong đó ta sá» dụng tên biến là \verb=y= :\par\nobreak \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \vtablecalc[3]{$x$}{y=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*y-3} {$x^2$}{y*y} {$h(x)=\sqrt{x^2+1}$}{round(root(2,y*y+1),6)} \end{lstlisting} \end{minipage} \vtablecalc[3]{$x$}{y=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*y-3} {$x^2$}{y*y} {$h(x)=\sqrt{x^2+1}$}{round(root(2,y*y+1),6)} \end{center} \subsection{Ẩn ná»™i dung cá»§a má»™t ô} \label{ano} Chúng ta có thể giấu Ä‘i ná»™i dung cá»§a má»™t ô bất kì, trong bảng ngang cÅ©ng như bảng dá»c. \subsubsection{Ẩn giá trị} Äể ẩn Ä‘i má»™t giá trị (cá»§a biến) nà o đó, trong danh sách các biến, chúng ta chỉ cần đặt trước giá trị đó kà tá»± "\verb|@|". Trong và dụ sau đây, chúng ta sẽ ẩn Ä‘i giá trị thứ 2 và thứ 5: \smallskip \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[3]{$x$}{x=-4,@-2,0,2.25,@7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{lstlisting} \end{minipage} \htablecalc[3]{$x$}{x=-4,@-2,0,2.25,@7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} \medskip Nếu muốn thay \verb|@| bằng má»™t kà tá»± khác thì chỉ cần dùng lệnh \verbinline|\def\tcnoshowmark|, chẳng hạn nếu muốn thay \verb|@| bởi \verb|=|, ta dùng \verbinline|\def\tcnoshowmark{=}|. \subsubsection{Ẩn kết quả} Vá»›i má»—i giá trị cho trước, chúng ta có thể ẩn các kết quả thứ $a_1,a_2,\ldots,a_n$ bằng cách thêm $[a_1][a_2]\ldots[a_n]$ và o sau giá trị nà y, trong đó $a_i$ được sắp xếp theo thứ tá»± tăng dần. Nếu má»™t $a_j$ nà o đó bằng 0, tất cả các kết quả thứ $a_k$ vá»›i $k>j$ Ä‘á»u được ẩn Ä‘i.\medskip Trong và dụ sau đây, chúng ta sẽ:\parindent2em \begin{itemize} \item ẩn Ä‘i kết quả thứ 2 cá»§a giá trị đầu tiên vá»›i "\verb|-4[2]|" \item hiển thị tất cả các kết quả cá»§a giá trị thứ 2 vá»›i "\verb|-2|" \item ẩn Ä‘i kết quả thứ nhất và thứ 3 cá»§a giá trị thứ 3 vá»›i "\verb|0[1][3]|" \item ẩn Ä‘i tất cả các kết quả cá»§a giá trị thứ 4 vá»›i "\verb|2.25[0]|" \item ẩn Ä‘i tất cả các kết quả từ thứ 2 trở Ä‘i cá»§a giá trị thứ 5 vá»›i "\verb|7[2][0]|" \end{itemize}\parindent0em \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[3]{$x$}{x=-4[2],-2,0[1][3],2.25[0],7[2][0]} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{lstlisting} \end{minipage} \htablecalc[3]{$x$}{x=-4[2],-2,0[1][3],2.25[0],7[2][0]} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} Chúng ta cÅ©ng có thể kết hợp cú pháp nà y vá»›i \verb|@| để ẩn Ä‘i cả giá trị lẫn kết quả nếu muốn. \subsection{Chiá»u cao cá»§a hà ng} Khi hiển thị má»™t bảng, \tbcalc sẽ thá»±c hiện lệnh \verbinline|\tcatbeginrow| ở đầu cá»§a má»—i hà ng. Theo mặc định, lệnh nà y được định nghÄ©a bởi \verbinline|\def\tcatbeginrow{\rule[-1.2ex]{0pt}{4ex}}|. Mặc nhiên, lệnh nà y đã cố định chiá»u cao cá»§a tất cả các hà ng bằng cách sá» dụng các "cây thước" có bá» rá»™ng 0pt. Äể dá»… hình dung, đây là má»™t "cây thước" vá»›i bá» rá»™ng 2pt nằm trước chữ "a" : \rule[-1.2ex]{2pt}{4ex}a\medskip Như váºy chúng ta có thể thay thế "cây thước" nà y bằng má»™t thứ khác. Và dụ : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \def\tcatbeginrow{% {\bfseries\number\tclin)\ }% } \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{lstlisting} \end{minipage} \def\tcatbeginrow{% {\bfseries\number\tclin)\ }% } \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} Trong và dụ nà y, ở đầu hà ng, chúng ta đã hiển thị (và in Ä‘áºm) số thứ tá»± cá»§a má»—i hà ng (số thứ tá»± nà y được cung cấp bởi bá»™ đếm \verbinline|\tclin|). \subsection{ÄÆ°á»ng kẻ ngang} \tbcalc cung cấp 3 kiểu đưá»ng kẻ ngang, tương ứng vá»›i 3 tham số cá»§a lệnh \verbinline|\tcsethrule| : \parindent2em \begin{itemize} \item "đưá»ng 0" là đưá»ng kẻ ngang ở trên cùng và dưới cùng cá»§a bảng; \item "đưá»ng 1" là đưá»ng kẻ ngang ngay dưới hà ng thứ nhất; \item "các đưá»ng khác" là các đưá»ng kẻ ngang ngay dưới các hà ng kết quả (trừ hà ng cuối cùng). \end{itemize}\parindent0em Äây là cú pháp : \verbinline|\tcsethrule|\ARGU{đưá»ng 0}\ARGU{đưá»ng 1}\ARGU{các đưá»ng khác} \medskip Theo mặc định, cả ba tham số Ä‘á»u là \verbinline|\hline|.\medskip Sau đây là má»™t và dụ trong đó đưá»ng kẻ ngang dưới hà ng thứ nhất là má»™t đưá»ng đôi và các đưá»ng khác Ä‘á»u bị xoá : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \tcsethrule{\hline}{\hline\hline}{} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{lstlisting} \end{minipage} \tcsethrule{\hline}{\hline\hline}{} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{center} Lệnh \verbinline|\tcresethrule| cho phép trở lại các kiểu đưá»ng kẻ ngang như mặc định. \subsection{Tuỳ chá»n đối vá»›i cá»™t} \subsubsection{ÄÆ°á»ng kẻ dá»c} \tbcalc có hai loại cá»™t : cá»™t đầu tiên (bên trái) và các cá»™t còn lại. Lệnh \verbinline|\setcoltype| sá» dụng má»™t tham số tuỳ chá»n và hai tham số bắt buá»™c : \begin{itemize} \item tham số tuỳ chá»n, trống theo mặc định, xác định đưá»ng kẻ dá»c "|" cuối cùng (bên phải) cá»§a bảng; \item tham số bắt buá»™c thứ nhất xác định các đưá»ng kẻ cá»§a cá»™t thứ nhất (nếu không sá» dụng \verbinline|\setcoltype| thì nó được mặc định là "|c|"; \item tham số bắt buá»™c thứ hai xác định các đưá»ng kẻ cá»§a các cá»™t còn lại (nếu không sá» dụng \verbinline|\setcoltype| thì nó được mặc định là "c|" \end{itemize}\medskip Cú pháp :\par\nobreak \verbinline|\tcsetcoltype|\arguC{tuỳ chá»n}\ARGU{tham số 1}\ARGU{tham số 2}\medskip Sau đây là má»™t và dụ : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \tcsetcoltype[||]{||c||}{c} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{lstlisting} \end{minipage} \tcsetcoltype[||]{||c||}{c} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{center} Lệnh \verbinline|\tcresetcoltype| cho phép trở lại vá»›i các kiểu cá»™t như mặc định. \subsubsection{Äá»™ rá»™ng cá»§a cá»™t} Thay vì sá» dụng tham số cá»™t "c" như trước đây, chúng ta có thể Ä‘iá»u chỉnh độ rá»™ng cá»§a tất cả các cá»™t (trừ cá»™t đầu tiên) bằng cách sá» dụng tham số "m" cá»§a gói \href{http://www.ctan.org/tex-archive/graphics/pgf/base/latex/pgf/basiclayer/}{\texttt{\textbf{array}}}. Trong và dụ sau đây, chúng ta sẽ canh phải cá»™t thứ nhất, các cá»™t còn lại sẽ được canh giữa và có độ rá»™ng \numprint[cm]{1.5} : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \usepackage{array} \tcsetcoltype{|r|}{>{\centering\arraybackslash}m{1.5cm}|} \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{lstlisting} \end{minipage} \tcsetcoltype{|r|}{>{\centering\arraybackslash}m{1.5cm}|} \htablecalc[3]{$x$}{x=-4,-2,0,2.25,7} {$f(x)=2x-3$}{2*x-3} {$x^2$}{x*x} {$h(x)=\sqrt{x^2+1}$}{round(root(2,x*x+1),6)} \end{center} \section{Nháºp giá trị bằng công thức} \label{nhapbangcongthuc} Khi mà số lượng các giá trị cá»§a biến nháºp và o khá lá»›n và tuân theo má»™t quy luáºt toán há»c nà o đó, thay vì nháºp và o tất cả các giá trị đó, chúng ta chỉ cần nháºp và o công thức cá»§a chúng. Và dụ như cú pháp : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[2]{$x$}{x=-3,-1,1,3,5,7,9,11,13} {$2x$}{2*x} {$x^2$}{x*x} \end{lstlisting} \end{minipage} \end{center} có thể được thay thế bởi : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[2]{$x$}{x=a;a=-3:13[2]} {$2x$}{2*x} {$x^2$}{x*x} \end{lstlisting} \end{minipage} \end{center} Sá»± xuất hiện cá»§a dấu chấm phẩy "\verb=;=" đã thay đổi đã thay đổi cách Ä‘á»c tham số chứa "danh sách" các giá trị cá»§a biến : ta thấy rằng ở phÃa bên phải cá»§a dấu chấm phẩy, biến trung gian "\verb=a=" được gán các giá trị nguyên từ $-3$ đến 13 vá»›i gia số bằng 2 : các giá trị là các số \emph{lẻ} liên tiếp; ở bên trái cá»§a dấu chấm phẩy, biến chÃnh \verb=x= được gán giá trị cá»§a biến trung gian \verb=a= do đó nó cÅ©ng sẽ được gán các giá trị là các số nguyên lẻ từ $-3$ đến 13. Từ đây ta còn có nhiá»u cách viết khác, chẳng hạn \verb|{x=2*a+1:a=-2:6}| hoặc \verb|{x=2*a-3;a=0:8}| (gia số bằng 1 theo mặc định)\bigskip Khi sá» dụng cách viết nà y, chúng ta không thể ẩn Ä‘i giá trị cá»§a các ô như đã gặp ở trang~\pageref{ano}.\medskip Vá»›i cú pháp nà y, tham số chứa các giá trị cá»§a biến được viết ở dạng sau :\par\smallskip\nobreak \hfill\argu{biến 1}\verb|=|\argu{công thức}\verb|;|\argu{biến 2}\verb|=|\argu{min}\verb|:|\argu{max}\arguC{gia số}\hfill{}\smallskip trong đó : \parindent2em \begin{itemize} \item \argu{biến 1} là biến chÃnh (chúng ta cần tÃnh giá trị cá»§a các công thức theo biến nà y); \item \argu{biến 2} là biến trung gian (biến được dùng để xác định các giá trị cá»§a biến chÃnh), biến nà y bắt buá»™c phải khác \argu{biến 1}. \item \argu{công thức} là công thức cá»§a \argu{biến 1} theo \argu{biến 2}; \item \argu{min}\verb|:|\argu{max} là đoạn (hay khoảng) mà \argu{biến 2} thay đổi (\argu{min} không nhất thiết phải nhá» hÆ¡n \argu{max}); \item \argu{gia số} là gia số (cá»§a cấp số cá»™ng theo \argu{biến 2}, số hạng đầu tiên là \argu{min} và số hạng cuối phải nhá» hÆ¡n hoặc bằng \argu{max} nếu gia số dương và lá»›n hÆ¡n hoặc bằng \argu{max} nếu gia số âm); gia số nà y phải khác 0 (bằng \verb=1= theo mặc định). \end{itemize}\parindent0em \medskip Như chúng ta đã thấy, có nhiá»u cách khác nhau để nháºp và o các giá trị cá»§a biến theo kiểu trên. Dưới đây là má»™t và dụ khác, nó sẽ nháºp và o các giá trị \texttt{\{0,1,2,3,4,5,6,7,8,9,10\}} : \parindent2em \begin{itemize} \item \verb|{z=x;x=0:10}| trong đó \verb=z= là biến chÃnh; \item \verb|{n=2*a;a=0:5[0.5]}| trong đó \verb=n= là biến chÃnh; \item \verb|{x=y/10;y=0:100[10]}| trong đó \verb=x= là biến chÃnh; \end{itemize} \parindent0pt\medskip Chú ý : khoảng cá»§a biến trung gian và gia số cần phải tương thÃch vá»›i nhau : nếu \argu{min} < \argu{max} thì gia số phải là số dương còn nếu \argu{min} > \argu{max} thì gia số phải là số âm. Và dụ như vá»›i tham số \verb|0:10[-1]|, hệ thống sẽ báo lá»—i !\medskip Sau đây là má»™t và dụ sá» dụng các hà m số lượng giác cá»§a \verb|fp|: \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[6]{$x$\ [deg]}{x=a;a=15:75[15]} {$\sin x$}{round(sin(x*pi/180),6)} {$\cos x$}{round(cos(x*pi/180),6)} {$\tan x$}{round(tan(x*pi/180),6)} {$\sin^2x$}{round(sin(x*pi/180)^2,6)} {$\cos^2x$}{round(cos(x*pi/180)^2,6)} {$\tan^2x$}{round(tan(x*pi/180)^2,6)} \end{lstlisting} \end{minipage} \htablecalc[6]{$x$\ [deg]}{x=a;a=15:75[15]} {$\sin x$}{round(sin(x*pi/180),6)} {$\cos x$}{round(cos(x*pi/180),6)} {$\tan x$}{round(tan(x*pi/180),6)} {$\sin^2x$}{round(sin(x*pi/180)^2,6)} {$\cos^2x$}{round(cos(x*pi/180)^2,6)} {$\tan^2x$}{round(tan(x*pi/180)^2,6)} \end{center} \medskip Còn bảng sau đây là các luỹ thừa cÆ¡ số 10 cùng logarit tháºp phân, căn báºc hai và nghịch đảo cá»§a chúng : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \htablecalc[3]{Lu\-ỹ th\-ừa c\-Æ¡ s\-ố 10}{x=round(10^n,4);n=-3:3} {Logarit th\-áºp ph\-ân}{ln(x)/ln(10)} {C\-ă b\-áºc hai}{round(root(2,x),3)} {S\-ố Ä‘\-ảo}{1/x} \end{lstlisting} \end{minipage} \htablecalc[3]{Luỹ\- thừ\-a cÆ¡\- số\- 10}{x=round(10^n,4);n=-3:3} {Logarit tháº\-p phâ\-n}{ln(x)/ln(10)} {Că\-n báº\-c hai}{round(root(2,x),3)} {Số\- đả\-o}{1/x} \end{center} \section{Tuỳ chá»n nâng cao} \subsection{Thi hà nh lệnh trong má»™t ô} Macro \verbinline|\defcellcode| cho phép thi hà nh lệnh trong má»™t ô, má»™t cá»™t hay má»™t hà ng. Các ô cá»§a má»™t bảng được đánh số như sau :\smallskip \begin{center} \def\tcprintvalue#1{}\def\tcprintresult#1#2{} \edefcellcode{}{}{(\number\tclin,\number\tccol)} \htablecalc[3]{}{x=1,2,3,4,5}{}{x}{}{x}{}{x} \end{center} \medskip Chỉ số đầu ---~ số thứ tá»± cá»§a hà ng~--- là giá trị cá»§a bá»™ đếm \verbinline{\tclin} còn chỉ số thứ hai ---~ số thứ tá»± cá»§a cá»™t~--- là giá trị cá»§a bá»™ đếm \verbinline{\tccol}.\smallskip Sau đây là cú pháp : \verbinline|\defcellcode|\ARGU{chỉ số 1}\ARGU{chỉ số 2}\ARGU{code} \smallskip trong đó :\parindent2em \begin{itemize} \item \ARGU{chỉ số 1} là số thứ tá»± cá»§a hà ng; \item \ARGU{chỉ số 2} là số thứ tá»± cá»§a cá»™t; \item \ARGU{code} là mã sẽ được thá»±c hiện khi hiển thị ô; \item Nếu không nháºp \ARGU{chỉ số 1} thì \ARGU{code} sẽ được thi hà nh đối vá»›i tất cả các hà ng; \item Nếu không nháºp \ARGU{chỉ số 2} thì \ARGU{code} sẽ được thi hà nh đối vá»›i tất cả các cá»™t; \end{itemize}\parindent0em \smallskip Cần chú rằng \ARGU{code} chỉ được thá»±c hiện khi \emph{hiển thị ô}, và lúc nà y, giá trị cá»§a bá»™ đếm \verbinline|\tccol| không còn là số thứ tá»± cá»§a cá»™t nữa, do đó chúng ta không thể sá» dụng \verbinline|\tccol| để thay thế cho \ARGU{chỉ số 2} trong lệnh \verbinline|\defcellcode|. Ngược lại, giá trị cá»§a bá»™ đếm \verbinline|\tclin| chÃnh là số thứ tá»± cá»§a hà ng được hiển thị. Nếu lệnh \verbinline|\defcellcode| được thi hà nh nhiá»u lần vá»›i \ARGU{code} khác nhau trên cùng má»™t ô nà o đó, thì chúng sẽ được thi hà nh theo thứ tá»± đã viết chúng.\medskip Sau đây là má»™t và dụ, ná»™i dung cá»§a ô (2~,~3) sẽ được in bằng mà u xanh dương, hà ng 1 sẽ được in bằng mà u đỠvà cá»™t 4 mà u nâu. \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \usepackage{color} \defcellcode{2}{3}{\color{blue}} \defcellcode{1}{}{\color{red}} \defcellcode{}{4}{\color{brown}} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{lstlisting} \end{minipage} \defcellcode{2}{3}{\color{blue}} \defcellcode{1}{}{\color{red}} \defcellcode{}{4}{\color{brown}} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{center} Chúng ta thấy rằng số {\color{brown}\numprint{2}} cá»§a ô (1 , 4) có mà u nâu. Thá»±c ra đầu tiên nó đã được tô mà u đỠ(xem dòng thứ 3 cá»§a khối lệnh trên) rồi sau đó má»›i được tô mà u nâu (dòng 4).\bigskip Ngoà i ra, chúng ta cÅ©ng có thể sá» dụng \verbinline|\edefcellcode|. Lúc nà y, \ARGU{code} sẽ được thá»±c hiện lần đầu tiên vá»›i \verbinline|\edef|\footnote{Có thể thêm và o \texttt{\string\noexpand} ở trước lệnh mà ta không muốn thi hà nh lúc nà y.} khi xây dá»±ng ô, và giá trị cá»§a bá»™ đếm \verbinline|\tccol| chÃnh là số thứ tá»± cá»§a ô đó. \ARGU{code} sẽ được thá»±c hiện thêm má»™t lần nữa khi hiển thị ô.\medskip Trong và dụ sau đây, chúng ta sẽ tô mà u xanh dương ná»™i dung cá»§a tất cả các cá»™t có số thứ tá»± lá»›n hÆ¡n 2 : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \usepackage{color} \edefcellcode{}{}{% \ifnum\tccol>2 \noexpand\color{blue}\fi} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{lstlisting} \end{minipage} \edefcellcode{}{}{% \ifnum\tccol>2 \noexpand\color{blue}\fi} \htablecalc[3]{$x$}{x=-2,-1,0,1,2,3} {$2x$}{2*x} {$3x$}{3*x} {$4x$}{4*x} \end{center} \subsection{Tuỳ chá»n hiển thị} \subsubsection{Các macro {\ttfamily\textbackslash printvalue} và {\ttfamily\textbackslash printresult}}\label{persoaffichage} Äể in ra má»™t giá trị, lệnh \verbinline|\tcprintvalue| sẽ được gá»i. Nó chỉ có má»™t tham số là số chữ số tháºp phân cần in ra (được cho bởi \verb|fp|). Theo mặc định, \verbinline|\tcprintvalue| được định nghÄ©a như sau :\par\nobreak\smallskip \hfill\verbinline|\def\tcprintvalue#1{\numprint{#1}}|\hfill{} \smallskip Ta thấy rằng lệnh \verb|\numprint| được gá»i để in ra đẹp hÆ¡n.\bigskip Äể in ra má»™t kết quả, lệnh \verbinline|\tcprintresult| sẽ được gá»i. Lệnh nà y có \textbf{hai} tham số : má»™t là kết quả cho bởi \verb|fp| và hai là giá trị cá»§a biến. Theo mặc định, \verbinline|\tcprintresult| được định nghÄ©a như sau :\par\nobreak\smallskip \hfill\verbinline|\def\tcprintresult#1#2{\numprint{#1}}|\hfill{} \smallskip Như váºy ta thấy rằng tham số \verb|#2| (giá trị cá»§a biến) không phụ thuá»™c và o \verbinline|\tcprintresult|. Tuy nhiên ta cÅ©ng có thể thay đổi Ä‘iá»u nà y. Trong và dụ sau đây, chúng ta sẽ in ra má»™t chữ \verb|X| mà u đỠkhi cạnh cá»§a hình vuông (chÃnh là tham số \verb|#2|) là má»™t số âm, nếu không ta sẽ in ra kết quả (diện tÃch hình vuông, tham số \verb|#1|) cùng vá»›i đơn vị. HÆ¡n nữa là sẽ tô mà u xanh tất cả các kết quả nhá» hÆ¡n 10 :\par\nobreak \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \usepackage{color} \def\tcprintresult#1#2{% \ifdim#1pt<10pt\color{blue}\fi \ifdim#2pt<0pt \color{red}\texttt{X}% \else \numprint[cm^2]{#1}% \fi} \htablecalc{C\-ạnh c\-á»§a h\-ình vu\-ông}{x=0.7,-10,3,-2,5,12} {Di\-ện t\-Ãch}{x*x} \end{lstlisting} \end{minipage} \def\tcprintresult#1#2{% \ifdim#1pt<10pt\color{blue}\fi \ifdim#2pt<0pt \color{red}\texttt{X}% \else \numprint[cm^2]{#1}% \fi} \htablecalc{Cạnh cá»§a hình vuông}{x=0.7,-10,3,-2,5,12}{Diện tÃch}{x*x} \end{center} \subsubsection{Äiá»u chỉnh các số là m tròn} Các phép tÃnh được tÃnh bởi \verb|fp| có độ chÃnh xác rất cao, đến 12 chữ số tháºp phân. Và dụ phép tÃnh $\sqrt{10}$ bởi \verb=fp= sẽ cho ra kết quả : \begin{center}\FPeval\truc{root(2,10)}\numprint\truc\end{center} 11 chữ số tháºp phân đầu tiên là chÃnh xác, chữ số thứ 12 là là m tròn.\medskip Äối vá»›i các kết quả, chúng ta có thể sá» dụng hà m \verb|round(kết quả,số chữ số tháºp phần)| cá»§a \verb|fp| (như đã thấy trong các và dụ trước). Nhưng nếu muốn đơn giản hoá các câu lệnh chúng ta cÅ©ng có thể sá» dụng lệnh \verbinline|\tcprintroundresult| cá»§a \tbcalc. Tham số cá»§a nó là số chữ số tháºp phân mà ta cần in ra. Nếu thay \verbinline|\tcprintroundresult| bởi \verbinline|\tcprintroundresult*| thì nó sẽ thêm và o (nếu cần) các kết quả chẵn (chÃnh xác) má»™t số chữ số 0 cho đủ số chữ số tháºp phân cần in ra. Nếu tham số được để trống thì \tbcalc sẽ không là m tròn kết quả. \begin{center} \begin{minipage}{0.5\linewidth} \begin{center} \begin{lstlisting} \tcprintroundresult{3} \htablecalc{$x$}{x=2,3,4,5} {$\sqrt{x}$}{root(2,x)} \end{lstlisting} \tcprintroundresult{3} \htablecalc{$x$}{x=2,3,4,5} {$\sqrt{x}$}{root(2,x)} \end{center} \end{minipage}% \begin{minipage}{0.5\linewidth} \begin{center} \begin{lstlisting} \tcprintroundresult*{3} \htablecalc{$x$}{x=2,3,4,5} {$\sqrt{x}$}{root(2,x)} \end{lstlisting} \tcprintroundresult*{3} \htablecalc{$x$}{x=2,3,4,5} {$\sqrt{x}$}{root(2,x)} \end{center} \end{minipage} \end{center} Lưu ý : khi nháºp giá trị bằng công thức (xem trang~\pageref{nhapbangcongthuc}), \textbf{không nên} sá» dụng hà m số \verb|round| (trong công thức liên hệ giữa biến chÃnh và biến trung gian), bởi vì nó sẽ là m tròn các giá trị cá»§a biến chÃnh và do đó các kết quả sẽ không chÃnh xác. Và dụ : \begin{center} \begin{minipage}{0.75\linewidth} \begin{lstlisting} \htablecalc{C\-ăn b\-áºc hai}{x=round(root(2,k),2);k=2:4} {B\-ình ph\-ư\-Æ¡ng}{x*x} \end{lstlisting} \end{minipage} \htablecalc{Căn báºc hai}{x=round(root(2,k),2);k=2:4} {Bình phương}{x*x} \end{center} Ta thấy rằng các kết quả đã không còn chÃnh xác. Tốt hÆ¡n hết là nên sá» dụng \verbinline|\tcprintroundvalue| và \verbinline|\tcprintroundresult| vá»›i cùng má»™t tham số : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \tcprintroundvalue{2} \htablecalc{C\-ăn b\-áºc hai}{x=root(2,k);k=2:4} {B\-ình ph\-ư\-Æ¡ng}{x*x} \end{lstlisting} \end{minipage} \tcprintroundvalue{2} \htablecalc{Căn báºc hai}{x=root(2,k);k=2:4} {Bình phương}{x*x} \end{center} Các kết quả, không được là m tròn, là rất gần vá»›i các kết quả chÃnh xác. \subsubsection{Má»™t chút thư giãn} Chúng ta sẽ dùng \tbcalc để vẽ má»™t bà n cá» vua trong đó má»—i ô có cạnh bằng \numprint[cm]{0.5} :\par\nobreak\parindent2em \begin{itemize} \item dòng 1 cho bằng \verb|0pt| các phân cách cá»§a bảng để không ảnh hưởng đến chiá»u rá»™ng \numprint[cm]{0.5} mà ta sẽ vẽ ở các dòng tiếp theo ngay dưới đây; \item dòng 2 cho phép không in ra bất kì giá trị hay kết quả nà o; \item dòng 3 cho phép chỉ có hai đưá»ng kẻ ngang là đưá»ng trên cùng và dưới cùng cá»§a bảng, còn dòng 4 là đưá»ng bên trái và bên phải cùng cá»§a bảng; \item dòng 5 thiết láºp má»™t "cây thước" cao \numprint[cm]{0.5} ở má»—i hà ng cá»§a bảng; \item dòng 7 kiểm tra tÃnh chẵn lẻ cá»§a tổng số thứ tá»± hà ng + số thứ tá»± cá»™t cá»§a má»—i ô, và nếu tổng nà y là lẻ thì ta sẽ tô mà u xám các ô nà y ở dòng 8. \end{itemize}\parindent0em \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \arraycolsep=0pt\tabcolsep=0pt \def\tcprintvalue#1{}\def\tcprintresult#1#2{} \tcsethrule{\hline}{}{} \tcsetcoltype[|]{|m{0.5cm}}{m{0.5cm}} \def\tcatbeginrow{\rule[-0.2cm]{0pt}{0.3cm}} \edefcellcode{}{}{% \ifodd\numexpr\tccol+\tclin\relax \noexpand\cellcolor{lightgray}\fi } \htablecalc[7]{}{x=1,2,3,4,5,6,7} {}{x}{}{x}{}{x}{}{x}{}{x}{}{x}{}{x} \end{lstlisting} \end{minipage} \arraycolsep=0pt\tabcolsep=0pt \def\tcprintvalue#1{}\def\tcprintresult#1#2{} \tcsethrule{\hline}{}{} \tcsetcoltype[|]{|m{0.5cm}}{m{0.5cm}} \def\tcatbeginrow{\rule[-0.2cm]{0pt}{0.3cm}} \edefcellcode{}{}{% \ifodd\numexpr\tccol+\tclin\relax \noexpand\cellcolor{lightgray}\fi } \htablecalc[7]{}{x=1,2,3,4,5,6,7} {}{x}{}{x}{}{x}{}{x}{}{x}{}{x}{}{x} \end{center} \section{Xuất má»™t bảng ra má»™t táºp tin} Nếu lệnh \verbinline=\tcwritetofile=\ARGU{filename} (vá»›i má»™t tham số bắt buá»™c là tên táºp tin không chứa phần mở rá»™ng) đặt trước \verbinline=\htablecalc= hoặc \verbinline=\vtablecalc= thì hai lệnh nà y sẽ không in ra bảng như thưá»ng lệ mà chúng sẽ tạo ra má»™t táºp tin \argu{filename}\verb|.tex| (trong cùng thư mục vá»›i táºp tin tạo ra nó) chứa mã \TeX{} cá»§a bảng.\medskip Sau đây là má»™t và dụ : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \tcwritetofile{mytable} \defcellcode{}{2}{\color{blue}} \htablecalc[2]{$x$}{x=k;k=0:4} {$2x$}{2*x} {$x^2$}{x*x} \tcresetcellcode \end{lstlisting} \end{minipage} \end{center} \tcwritetofile{mytable} \defcellcode{}{2}{\color{blue}} \htablecalc[2]{$x$}{x=k;k=0:4} {$2x$}{2*x} {$x^2$}{x*x} \tcresetcellcode Má»™t táºp tin có tên \verb=mytable.tex= sẽ được tạo ra trong cùng thư mục vá»›i táºp tin Ä‘ang được sá» dụng và nó chứa mã \TeX{} cá»§a bảng trên : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \begin {tabular}{|c|*{5}{c|}}\hline \tcatbeginrow $x$&\tcprintvalue {0}&\color {blue}\tcprintvalue {1}&\tcprintvalue {2}&\tcprintvalue {3}&\tcprintvalue {4}\\\hline \tcatbeginrow $2x$&\tcprintresult {0}{0}&\color {blue}\tcprintresult {2}{1}&\tcprintresult {4}{2}&\tcprintresult {6}{3}&\tcprintresult {8}{4}\\ \hline \tcatbeginrow $x^2$&\tcprintresult {0}{0}&\color {blue}\tcprintresult {1}{1}&\tcprintresult {4}{2}&\tcprintresult {9}{3}&\tcprintresult {16}{4}\\ \hline \end {tabular} \end{lstlisting} \end{minipage} \end{center} Äiá»u nà y giúp ngưá»i sá» dụng dá»… dà ng thay đổi các đặc Ä‘iểm cá»§a bảng theo ý muốn và sau đó có thể chèn táºp tin nà y và o táºp tin cá»§a má»™t tà i liệu nà o đó vá»›i lệnh : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \input{mytable.tex} \end{lstlisting} \end{minipage} \end{center} và đây là kết quả : \begin{center} \input{mytable.tex} \end{center} \section{Sá» dụng khái niệm "trung tố" hay "háºu tố"} Chúng ta có thể sá» dụng cả hai khái niệm "trung tố" (infix) và "háºu tố" (postfix) bởi vì \tbcalc sá» dụng \verb=\FPeval= và vá»›i \verb=\FPeval= thì cả hai cách dùng nà y Ä‘á»u được chấp nháºn. Trong và dụ sau đây, để tạo ra cùng má»™t bảng, ta sẽ sá» dụng khái niệm "trung tố" sau đó là "háºu tố". Hiển nhiên kết quả nháºn được là như nhau bởi vì ta sá» dụng cùng má»™t "máy tÃnh" : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} \tcprintroundvalue{6} \tcprintroundresult{6} V\-á»›i kh\-ái ni\-ệm trung t\-ố\par \htablecalc[3]{$x=10^k$ o\`u $k\in[-3;3]$}{x=10^k;k=-3:3} {$\log x$}{ln(x)/ln(10)} {$\sqrt{x}$}{root(2,x)} {$\frac{1}{x}$}{1/x} \medskip V\-á»›i kh\-ái ni\-ệm h\-áºu t\-ố\par \htablecalc[3]{$x=10^k$ o\`u $k\in[-3;3]$}{x=k 10 pow;k=-3:3} {$\log x$}{x ln 10 ln div} {$\sqrt{x}$}{2 x root} {$\frac{1}{x}$}{1 x div} \end{lstlisting} \end{minipage} \tcprintroundvalue{6} \tcprintroundresult{6} Vá»›i khái niệm trung tố\par\par\nobreak \htablecalc[3]{$x=10^k$ o\`u $k\in[-3;3]$}{x=10^k;k=-3:3} {$\log x$}{ln(x)/ln(10)} {$\sqrt{x}$}{root(2,x)} {$\frac{1}{x}$}{1/x} \medskip Vá»›i khái niệm háºu tố\par\par \htablecalc[3]{$x=10^k$ o\`u $k\in[-3;3]$}{x=k 10 pow;k=-3:3} {$\log x$}{x ln 10 ln div} {$\sqrt{x}$}{2 x root} {$\frac{1}{x}$}{1 x div} \end{center} Nếu như bạn thông thạo cả hai cách viết thì khái niệm háºu tố có lẽ là tốt hÆ¡n vì nó sẽ giúp tÃnh toán nhanh hÆ¡n. Chẳng hạn biểu thức $\cos x(1-\cos x)$ sẽ được viết như sau vá»›i khái niệm trung tố \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} cos(x)*(1-cos(x)) \end{lstlisting} \end{minipage} \end{center} Như váºy sẽ phải mất hai lần tÃnh $\cos x$.\smallskip Còn vá»›i khái niệm háºu tố thì $\cos x$ chỉ được tÃnh má»™t lần : \begin{center} \begin{minipage}{\mywidth} \begin{lstlisting} x cos copy 1 swap sub mul \end{lstlisting} \end{minipage} \end{center} \bigskip \begin{center} $\star$\par $\star$\quad$\star$ \end{center} \bigskip Äó là tất cả, hi vá»ng rằng gói nà y sẽ giúp Ãch cho các bạn !\par\nobreak Má»i ý kiến đóng góp xin gá»i vá» cho tác giả qua \href{mailto:unbonpetit@gmail.com}{\texttt{\textbf{email}}}.\par\nobreak\bigskip Christian \textsc{Tellechea}\\ Nd : nếu bạn muốn đóng góp ý kiến cho bản dịch, xin gá»i email đến địa chỉ \href{mailto:huudienkhue.le@gmail.com}{\texttt{\textbf{huudienkhue.le@gmail.com}}}. Xin cảm Æ¡n ! \end{document}