Thứ Tư, 3 tháng 9, 2025

Viết một macro có nhiều hơn 9 tham số

Thông thường một macro của LaTeX có tối đa 9 tham số được đánh số bởi
#1, #2, ... , #9.
Trong nhiều trường hợp ta muốn một macro có nhiều hơn 9 tham số.
Ví dụ, gói calculator thực hiện các phép tính đơn giản, chẳng hạn nó tính được các định thức cấp ba khi ta nhập 9 tham số vào lệnh \DETERMINANT.  Chúng tôi đưa ra một ví dụ sử dụng 16 tham số để tính định thức cấp 4 như sau:
  1. Khai báo
    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{vietnam} 
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage{calculator}
    \begin{document}
    \end{document}

     

  2. Cấu trúc của macro 16 tham số  (9+7)
    \newcommand{\dinhthuc}[9]
    {
            \def\dinhthucmore##1##2##3##4##5##6##7
    	{nội dung}
    	\dinhthucmore
    }

     

  3. Áp dụng:
    
    \newcommand{\dinhthuc}[9]
    {
    \def\dinhthucmore##1##2##3##4##5##6##7{
    \DETERMINANT(#6,#7,#8;##1,##2,##3;##5,##6,##7){\sola}
    \DETERMINANT(#2,#3,#4;##1,##2,##3;##5,##6,##7){\solb}
    \DETERMINANT(#2,#3,#4;#6,#7,#8;##5,##6,##7){\solc}
    \DETERMINANT(#2,#3,#4;#6,#7,#8;##1,##2,##3){\sold}
    \MULTIPLY{#1}{\sola}{\sole}
    \MULTIPLY{#5}{\solb}{\solf}
    \MULTIPLY{#9}{\solc}{\solg}
    \MULTIPLY{##4}{\sold}{\solh}
    \SUBTRACT{\sole}{\solf}{\soli}
    \ADD{\soli}{\solg}{\solj}\SUBTRACT{\solj}{\solh}{\solk}
    $\begin{vmatrix}
    #1&#2&#3&#4\\ #5&#6&#7&#8\\ #9&##1&##2&##3\\ ##4&##5&##6&##7
    \end{vmatrix}=\solk$
    }
    \dinhthucmore
    }
    Viết một file cực ngắn:
    \begin{document}
    \dinhthuc{4}{9}{5}{9}{7}{8}{6}{8}{4}{1}{9}{9}{5}{3}{4}{2}
    \end{document}
    

     

    Kết quả: $ \left|\begin{array}{cccc} 4 & 9&5&9\\ 7&8&6&8\\ 4&1&9&9\\ 5&3&4&2 \end{array}\right|=380$
Lưu ý: Gói calculator chỉ tính toán đơn giản nên các số hạng của định thức cấp 4 chỉ giới hạn từ 0 đến 9. Lớn hơn cũng được nhưng nhiều trường hợp sẽ bị vượt quá khả năng tính. Bài này nhằm giới thiệu cách viết một macro nhiều hơn 9 tham số, không nhằm mục đích tính toán. Bạn nào muốn tính toán trực tiếp trong LaTeX nên tìm hiểu XCAS hoặc SageTeX. (siêu mạnh)

Không có nhận xét nào:

Đăng nhận xét