如何编写参数驱动的宏?

如何编写参数驱动的宏?

具体问题如下:

我希望可以定义一个可以切换不同字体的宏。我们假设这个宏名为\myfonts,所以,如果我输入{\myfonts throughout his life, Einstein published hundreds of books and articles.},字体将是默认的Minion Pro。但是如果我将一个参数传递给该宏,例如 ,{\myfonts{palatino} ...}它就会变成Palatino字体。

我现在对这个问题还没有任何概念。

在 LaTeX 中,如果你输入\documentclass{article},它将以a4paper10pt作为默认值,但如果你输入\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

相关内容