% % code from VietTUG code corner ( http://viettug.org/code/ ) % author: vanchutr % date: Mon, 26 May 2008 23:54:54 +0700 % description: % ví dụ về gói tabvar % view: http://viettug.org/code/code.4227492a50.html % download: http://viettug.org/code/code.4227492a50.txt % \documentclass[12pt]{article} \usepackage[utf8]{vietnam} \usepackage{amssymb,amsmath,amstext} \usepackage{pstricks} \input tabvar \def\tdx#1{{\bf\itshape{#1}}} \def\lui#1{\vspace{#1cm}} \newcounter{mucso} \def\muc{\stepcounter{mucso}{\bf\arabic{mucso}}.{}\hspace{.3cm}} \newcounter{tmucso} \def\tmuc{{\bf\arabic{mucso}.}\stepcounter{tmucso}{\bf\arabic{tmucso}}.{}\hspace{.3cm}} \begin{document} %\input manual.tex \hfil {\bf\Large CÁCH DÙNG TABVAR.TEX \hfil của Denis Léger} \lui{.5} Trên mạng có hai gói cùng tên tabvar. Nhưng theo nhận xét của tôi thì gói tabvar của Denis Léger tạo bảng đẹp hơn (Gói này chỉ có một file tabvar.tex duy nhất) \lui{.3} \muc Trong phần preamble chúng ta chỉ dùng lệnh \\ \verb+\input tabvar.tex+ và không cần cài đặt. Nghĩa là chỉ cần chép file tabvar.tex vào thư mục hiện hành (cùng nơi chứa file tài liệu chính). Gói tabvar này được dùng kèm với gói pstricks nên trong phần preamble cũng phải nạp gói pstricks (với lệnh \verb+\usepackage{}+) \lui{.3} \muc \tdx{Cấu trúc của bảng trong tabvar}: Một bảng có thể có nhiều dòng. Mỗi dòng được chia thành 3 phần: Phần đỉnh, phần giữa và phần đáy. Mỗi dòng có nhiều cột và các cột được phân cách bằng dấu \verb+&+ (esperluète) (giống như việc dùng lệnh \verb+\halign+ \lui{.3} \muc \tdx{Các lệnh của gói tabvar} \lui{.3} \tmuc{\bf Lệnh tạo mũi tên} \lui{.3} Lệnh \verb+\fm+: Tạo mũi tên đi lên đến phần giữa của dòng. Lệnh \verb+\fd+: Tạo mũi tên đi xuống đến phần giữa của dòng. Lệnh \verb+\fhh+: Tạo mũi tên nằm ngang trong phần đỉnh của dòng. Lệnh \verb+\fhm+: Tạo mũi tên nằm ngang trong phần giữa của dòng. Lệnh \verb+\fhb+: Tạo mũi tên nằm ngang trong phần đáy của dòng. Lệnh \verb+\fmh+: Tạo mũi tên đi lên trong phần đỉnh của dòng. Lệnh \verb+\fmb+: Tạo mũi tên đi lên trong phần đáy của dòng. Lệnh \verb+\fdh+: Tạo mũi tên đi xuống trong phần đỉnh của dòng. Lệnh \verb+\fdb+: Tạo mũi tên đi xuống trong phần đáy của dòng. \lui{.3} Ví dụ: \lui{.3} \hfil \tabvar{% \tx{x}&\tx{-\infty}&&\txt{0}&&\tx{+\infty}\cr \tx{x^2}&\txh{+\infty}&\fd&\txbt{0}&\fm&\txh{+\infty}\cr \tx{x^3}&\txb{-\infty}&\fmb&\txt{0}&\fmh&\txh{+\infty}\cr} Bảng trên được tạo ra do đoạn mã sau: \begin{verbatim} \tabvar{% \tx{x}&\tx{-\infty}&&\txt{0}&&\tx{+\infty}\cr \tx{x^2}&\txh{+\infty}&\fd&\txbt{0}&\fm& \txh{+\infty}\cr \tx{x^3}&\txb{-\infty}&\fmb&\txt{0}&\fmh& \txh{+\infty}\cr} \end{verbatim} %\end{document} \lui{.3} \tmuc{\bf Các dấu sổ đứng (gạch đứng)}. \lui{.3} Lệnh \verb+\traithaut+: Tạo dấu sổ đứng trong phần đỉnh. Lệnh \verb+\traitmilieu+: Tạo dấu sổ đứng trong phần giữa. Lệnh \verb+\traitbas+: Tạo dấu sổ đứng trong phần đáy. Lệnh \verb+\doubletraithaut+: Tạo dấu sổ đứng kép trong phần đỉnh. Lệnh \verb+\doubletraitmilieu+: Tạo dấu sổ đứng kép trong phần giữa. Lệnh \verb+\doubletraitbas+: Tạo dấu sổ đứng kép trong phần đáy. Lệnh \verb+\trait+: Tạo dấu sổ đứng qua cả ba phần. Lệnh \verb+\dbt+: Tạo dấu sổ đứng kép qua cả ba phần. \lui{.3} \tmuc {\bf Sắp xếp (xác lập) vị trí văn bản (công thức) với sổ đứng}. \lui{.3} Lệnh \verb+\tx{vbct}+: Đặt vbct trong phần giữa. Lệnh này thường dùng cho các cột bên trái bảng. Lệnh \verb+\xt{vbct}+: Đặt vbct trong phần đáy. Lệnh này thường dùng ở dòng thứ nhất của bảng. Lệnh \verb+\txh{vbct}+: Đặt vbct trong phần đỉnh. Lệnh này thường dùng ghi các giá trị cực đại. Lệnh \verb+\txb{vbct}+: Đặt vbct trong phần đáy. Lệnh này thường dùng ghi các giá trị cực tiểu. Lệnh \verb+\txt{vbct}+: Đặt vbct trong phần giữa. Lệnh này thường dùng ghi các giá trị đặc biệt của bảng và có các sổ đứng trên đỉnh và ở đáy. Lệnh \verb+\txht{vbct}+: Đặt vbct trong phần đỉnh. Lệnh này thường dùng ghi các giá trị đặc biệt của bảng và có các sổ đứng ở phần giữa và ở phần đáy. Lệnh \verb+\txbt{vbct}+: Đặt vbct trong phần đáy. Lệnh này thường dùng ghi các giá trị đặc biệt của bảng và có các sổ đứng ở phần giữa và ở phần đỉnh. Lệnh \verb+\xdbt{vbct}+: Đặt vbct trong phần đáy và dùng với dấu sổ đứng kép. \lui{.3} Ví dụ: Với đoạn mã dưới đây \begin{verbatim} \tabvar{% \tx{x}&\xt{0}&&\xt{1}&&\tx{+\infty}\cr \tx{h\'(x)}&\dbt&\tx{-}&\txt{0}&\tx{+}&\cr \tx{h(x)}&\txht{1}&\fd&\txbt{0}&\fm&\txh{+\infty}\cr} \end{verbatim} ta thu được bảng biến thiên: \hfil \tabvar{% \tx{x}&\xt{0}&&\xt{1}&&\tx{+\infty}\cr \tx{h\'(x)}&\dbt&\tx{-}&\txt{0}&\tx{+}&\cr \tx{h(x)}&\txht{1}&\fd&\txbt{0}&\fm&\txh{+\infty}\cr} %\end{document} \tmuc {\bf Sắp xếp vị trí văn bản (công thức) với dấu sổ đứng kép}. \lui{.3} Các macro này dùng sắp vbct vào phía phải hay trái của một sổ đứng kép. \lui{.3} Lệnh \verb+\txdbthb{vbcttrái}{vbctphải}+: Vẽ sổ đứng kép và đặt vbcttrái vào bên trái sổ đứng kép ở trong phần đỉnh và đặt vbctphải vào bên phải sổ đứng trong phần đáy. Lệnh \verb+\txdbthh{vbcttrái}{vbctphải}+: Vẽ sổ đứng kép và đặt vbcttrái vào bên trái sổ đứng kép ở trong phần đỉnh và đặt vbctphải vào bên phải sổ đứng trong phần đỉnh. Lệnh \verb+\txdbtbh{vbcttrái}{vbctphải}+: Vẽ sổ đứng kép và đặt vbcttrái vào bên trái sổ đứng kép ở trong phần đáy và đặt vbctphải vào bên phải sổ đứng trong phần đỉnh. Lệnh \verb+\txdbtbb{vbcttrái}{vbctphải}+: Vẽ sổ đứng kép và đặt vbcttrái vào bên trái sổ đứng kép ở trong phần đáy và đặt vbctphải vào bên phải sổ đứng trong phần đáy. \lui{.3} Ví dụ: \hfil \tabvar{% \tx{x}&\tx{-\infty}&&\xdbt{0}&&\tx{+\infty}\cr \tx{f(x)}&\txb{0}&\fm&\txdbthb{+\infty}{-\infty}&\fm&\txh{0}\cr} Bảng trên được tạo ra nhờ: \begin{verbatim} \tabvar{% \tx{x}&\tx{-\infty}&&\xdbt{0}&&\tx{+\infty}\cr \tx{f(x)}&\txb{0}&\fm&\txdbthb{+\infty}{-\infty}&\fm&% \txh{0}\cr} \end{verbatim} %\end{document} \tmuc{\bf Một số macro xác định kích thước hoặc tái lập lại các độ dài (kích thước) các thành phần của bảng}. \lui{.3} Lệnh \verb+\tabblanc+ thêm phần đỉnh và đáy 2pt và mỗi kích thước ngang được tăng thêm 10\% Lệnh \verb+\tabdim=valeur+ dùng xác định kích thước tối thiểu của bề rộng cột bằng valeur. Trong ví dụ trước thì \verb+\tabdim=0.8cm+ là kích thước tối thiểu mặc định. Nếu ta dùng lệnh \verb+\tabdim=0.5cm+ thì kích thước tối thiểu sẽ nhỏ hơn và do đó bề rộng các cột cũng giảm đi. Hãy so sánh hai hình ảnh dưới đây để thấy sự khác biệt. \hfil \tabvar{% \tx{x}&\tx{-\infty}&&\xdbt{0}&&\tx{+\infty}\cr \tx{f(x)}&\txb{0}&\fm&\txdbthb{+\infty}{-\infty}&\fm&\txh{0}\cr} \hfil{\tabdim=0.5cm \tabvar{% \tx{x}&\tx{-\infty}&&\xdbt{0}&&\tx{+\infty}\cr \tx{f(x)}&\txb{0}&\fm&\txdbthb{+\infty}{-\infty}&\fm&\txh{0}\cr} } %\end{document} \tmuc{\bf Tô xám một phần của bảng} \lui{.3} Chỉ cần dùng lệnh \verb+\grise+ tại cột nào thì tô màu xám được cột đó (trong một dòng). Ví dụ: \hfil \tabvar{% \tx{x}&\tx{-\infty}&&\tx{-1}&\grise&\tx{1}&&\tx{+\infty}\cr \tx{f\'(x)}&&\tx{+}&&\grise&&\tx{+}&\cr \tx{f(x)}&\txb{1}&\fm&\txh{+\infty}&\grise&\txb{0}&\fm&\txh{1}\cr} Bảng trên được vẽ nhờ đoạn mã sau: \begin{verbatim} \tabvar{% \tx{x}&\tx{-\infty}&&\tx{-1}&\grise&\tx{1}&&\tx{+\infty}\cr \tx{f\'(x)}&&\tx{+}&&\grise&&\tx{+}&\cr \tx{f(x)}&\txb{1}&\fm&\txh{+\infty}&\grise&\txb{0}&\fm% &\txh{1}\cr} \end{verbatim} %\end{document} Ta thay đổi bề rộng các cột cần tô màu bằng cách dùng (cục bộ) lệnh \verb+\tabdim+ \lui{.3} Ví dụ: \hfil \tabvar{% \tx{x}&\tx{-\infty}&&\tx{-1}&{\tabdim=0.2cm\grise}&\tx{1}&&\tx{+\infty}\cr \tx{f\'(x)}&&\tx{+}&&{\tabdim=0.2cm\grise}&&\tx{+}&\cr \tx{f(x)}&\txb{1}&\fm&\txh{+\infty}&{\tabdim=0.2cm\grise}&\txb{0}&\fm&\txh{1}\cr} \lui{.5} \muc \tdx{Chú ý} Cần phải viết các dấu \verb+&+ liền ngay bên trái văn bản, nếu không sẽ có một khoảng trắng được thêm vào phía bên phải và điều đó làm cho bảng bị chêm sang bên phải. \lui{.3} \muc \tdx{Một số ví dụ} \lui{.3} Viết như đoạn mã này \begin{verbatim} \tabvar{% \tx{x}&\xt{0}&&\xt{1}&&\tx{+\infty}\cr \tx{h\'(x)}&\dbt&\tx{-}&\txt{0}&\tx{+}&\cr \tx{h(x)}&\txht{1}&\fd&\txbt{0}&\fm&\txh{+\infty}\cr} \end{verbatim} thì thu được bảng sau: \hfil \tabvar{% \tx{x}&\xt{0}&&\xt{1}&&\tx{+\infty}\cr \tx{h\'(x)}&\dbt&\tx{-}&\txt{0}&\tx{+}&\cr \tx{h(x)}&\txht{1}&\fd&\txbt{0}&\fm&\txh{+\infty}\cr} \lui{.3} %\end{document} \hfil\tabvar{% \tx{x}&\xt{0}&&\xt{\alpha}&&\tx{+\infty}\cr \tx{f\'(x)}&\txt{1\over 2}&\tx{+}&\txt{0}&\tx{-}&&\cr \tx{f(x)}&\txbt{0}&\fm&\txht{\alpha-1}&\fd&\txb{0}\cr} Bảng trên tạo ra do: \begin{verbatim} \tabvar{% \tx{x}&\xt{0}&&\xt{\alpha}&&\tx{+\infty}\cr \tx{f\'(x)}&\txt{1\over 2}&\tx{+}&\txt{0}&\tx{-}&&\cr \tx{f(x)}&\txbt{0}&\fm&\txht{\alpha-1}&\fd&\txb{0}\cr} \end{verbatim} %\end{document} Nếu viết như: \begin{verbatim} \tabvar{% \tx{x}&\tx{-\infty}&&\xt{\cos t}&&\tx{+\infty}\cr \tx{f\'(x)}&&\tx{-}&\txt{0}&\tx{+}&\cr \tx{f(x)}&\txh{+\infty}&\fd&\txbt{\sin^2 t}&\fm&% \txh{+\infty}\cr} \end{verbatim} thì có bảng \lui{.3} \hfil\tabvar{% \tx{x}&\tx{-\infty}&&\xt{\cos t}&&\tx{+\infty}\cr \tx{f\'(x)}&&\tx{-}&\txt{0}&\tx{+}&\cr \tx{f(x)}&\txh{+\infty}&\fd&\txbt{\sin^2 t}&\fm&\txh{+\infty}\cr} %\end{document} Bảng sau \lui{.3} \hfil\tabvar{% \tx{x}&\tx{-\infty}&&\xt{0}&&\xt{+\lambda/3a}&&\tx{+\infty}\cr \tx{\varphi\'(x)}&&\tx{-}&\txt{0}&\tx{+}&\txt{0}&\cr \tx{\varphi(x)}&\txh{+\infty}&\fd&\txbt{\lambda t}&\fm&% \txh{\lambda+{\lambda^3\over 27a^2}}&\fd&\txb{-\infty}\cr} được tạo do đoạn mã: \begin{verbatim} \tabvar{% \tx{x}&\tx{-\infty}&&\xt{0}&&\xt{+\lambda/3a}&& \tx{+\infty}\cr \tx{\varphi\'(x)}&&\tx{-}&\txt{0}&\tx{+}&\txt{0}&\cr \tx{\varphi(x)}&\txh{+\infty}&\fd&\txbt{\lambda t}& \fm&\txh{\lambda+{\lambda^3\over 27a^2}}&\fd& \txb{-\infty}\cr} \end{verbatim} \end{document}