Tất cả những điều trên cho thấy khó có thể tạo ra một chức năng đẹp, linh hoạt (hoặc cấm quá tải) trong LaTeX !!! (mã TeX trông giống Hy Lạp đối với tôi)
tốt, chỉ để thêm sự phát triển gần đây (mặc dù không linh hoạt) của tôi, đây là những gì tôi đã sử dụng gần đây trong tài liệu luận án của mình, với
\usepackage{ifthen} % provides conditonals...
Bắt đầu lệnh, với lệnh "tùy chọn" được đặt trống theo mặc định:
\newcommand {\figHoriz} [4] [] {
Sau đó, tôi có macro đặt một biến tạm thời, \ temp {}, khác nhau tùy thuộc vào việc đối số tùy chọn có trống hay không. Điều này có thể được mở rộng cho bất kỳ đối số thông qua.
\ifthenelse { \equal {#1} {} } %if short caption not specified, use long caption (no slant)
{ \def\temp {\caption[#4]{\textsl{#4}}} } % if #1 == blank
{ \def\temp {\caption[#1]{\textsl{#4}}} } % else (not blank)
Sau đó, tôi chạy macro bằng biến \ temp {} cho hai trường hợp. (Ở đây, nó chỉ đặt chú thích ngắn bằng với chú thích dài nếu nó không được người dùng chỉ định).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
Trong trường hợp này, tôi chỉ kiểm tra đối số "tùy chọn" duy nhất mà \ newcommand {} cung cấp. Nếu bạn định thiết lập nó, giả sử, 3 đối số "tùy chọn", bạn vẫn phải gửi 3 đối số trống ... ví dụ:
\MyCommand {first arg} {} {} {}
Điều này khá là ngớ ngẩn, tôi biết, nhưng đó là về việc tôi sẽ đi với LaTeX - thật không hợp lý khi tôi bắt đầu nhìn vào mã TeX ... Mặc dù vậy, tôi thích phương pháp xparse của ông Robertson sẽ thử nó ...