如何寫參數驅動的巨集?

如何寫參數驅動的巨集?

一個具體問題如下:

我希望我可以定義一個可以切換不同字體的巨集。我們假設這個巨集被命名為\myfonts,所以,如果我輸入{\myfonts throughout his life, Einstein published hundreds of books and articles.},字體將是預設的Minion Pro。但是,如果我向該巨集傳遞一個參數,例如 ,{\myfonts{palatino} ...}它將成為Palatino字體。

我現在不知道這個問題。

在 LaTeX 中,如果輸入\documentclass{article},則會預設使用a4paperand ,但如果輸入,則會將其變更為and 。我對此很好奇:我怎麼能實現這個目標?10pt\documentclass[b5paper,11pt]{article}b5paper11pt

答案1

在此輸入影像描述

預設使用[]分隔參數和普通字體:

\def\myfonts{\futurelet\tmp\xmyfonts}
\def\xmyfonts{\ifx\tmp[\expandafter\argmyfonts\else\noargmyfonts\fi}
\def\argmyfonts[#1]{\csname myfonts#1\endcsname}
\def\noargmyfonts{\rm}
\def\myfontsa{\tt}
\def\myfontsb{\it}


{\myfonts abc de}
{\myfonts[a] abc de}
{\myfonts[b] abc de}

\bye

相關內容