Semua hal di atas menunjukkan kesulitan untuk membuat fungsi yang bagus, fleksibel (atau melarang kelebihan beban) di LaTeX !!! (kode TeX itu terlihat seperti Yunani bagi saya)
baik, hanya untuk menambahkan pengembangan saya baru-baru ini (walaupun tidak sefleksibel), inilah yang baru-baru ini saya gunakan dalam dokumen tesis saya, dengan
\usepackage{ifthen} % provides conditonals...
Mulai perintah, dengan perintah "opsional" dikosongkan secara default:
\newcommand {\figHoriz} [4] [] {
Saya kemudian meminta makro mengatur variabel sementara, \ temp {}, berbeda tergantung pada apakah argumen opsional kosong atau tidak. Ini bisa diperluas ke argumen yang disahkan.
\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)
Kemudian saya menjalankan makro menggunakan variabel \ temp {} untuk dua kasus. (Di sini ia hanya mengatur teks pendek untuk sama dengan teks panjang jika tidak ditentukan oleh pengguna).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
Dalam hal ini saya hanya memeriksa argumen "opsional" tunggal yang disediakan oleh \ newcommand {}. Jika Anda mengaturnya untuk, katakanlah, 3 argumen "opsional", Anda masih harus mengirim 3 argumen kosong ... mis.
\MyCommand {first arg} {} {} {}
yang cukup konyol, saya tahu, tapi itu tentang sejauh yang saya akan pergi dengan LaTeX - hanya saja tidak masuk akal begitu saya mulai melihat kode TeX ... Saya suka metode xparse Mr. Robertson, mungkin saya akan mencobanya ...