Tất cả các chương trình trên đều khó có thể tạo chức năng đẹp, linh hoạt (hoặc bị quá tải) trong LaTeX !!! (Mã TeX trông giống như Hy Lạp với tôi)
tốt, chỉ để thêm phát triển gần đây (mặc dù không phải là linh hoạt) của tôi, đây là những gì tôi đã sử dụng gần đây trong luận án doc tôi, 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 đó, macro đặt biến tạm thời, \ temp {}, khác nhau tùy thuộc vào tham 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ố nào được 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 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 một đối số "tùy chọn" mà \ newcommand {} cung cấp. Nếu bạn đã thiết lập nó cho, nói rằng, 3 "tùy chọn" args, bạn vẫn phải gửi 3 args trống ... ví dụ.
\MyCommand {first arg} {} {} {}
mà là khá ngớ ngẩn, tôi biết, nhưng đó là về như xa như tôi sẽ đi với LaTeX - nó chỉ là không phải là sensical một lần tôi bắt đầu nhìn vào mã TeX ... Tôi làm như ông Phương pháp xparse của Robertson, có lẽ tôi sẽ thử nó ...
câu hỏi liên quan: [định nghĩa lệnh khác nhau có và không có đối số tùy chọn] (http://tex.stackexchange.com/q/308/1347) . –