我正在尝试创建一个命令,以不同的样式在 LaTeX 文档上打印出 IP 地址。我想要做的事情非常简单,但我希望它具有可扩展性。
我已经这样做了:
\newcommand{\ipAddress}{
{\fontfamily{pcr}\selectfont
{}
}
}
我希望使用 IP 地址作为参数在文本上调用该命令,如下所示:
\ipAddress{100.64.0.0/10}
但它不起作用。
我对 LaTeX 还很陌生,正在尽力撰写我的第一篇“无模板”文档。
答案1
您的命令不带参数,因此实际上它不执行任何操作。试试这个:
\newcommand{\ipAddress}[1]{{\fontfamily{pcr}\selectfont #1}}
LaTeX 提供了一个\texttt
命令,它将它的参数设置为等宽(“电传打字机”)字体。因此您可以写入\texttt{100.64.0.0/10}
。
更好的是,您可以使用\let
命令创建一个对您来说具有语义意义的新宏,例如,\let\ipAddress\textt
然后您可以编写\ipAddress{100.64.0.0/10}
。
该\texttt
命令将以默认电传打字机系列呈现文本。默认情况下,这是 Computer Modern Typewriter。您可以通过将命令更改\ttdefault
为另一个字体系列来更改默认值,使用“新字体选择方案”中的缩写。要将电传打字机默认值设置为pcr
,您可以执行以下操作:
\renewcommand*\ttdefault{pcr}
因此,如果必须使用,我会这样做pcr
。您可以修改此示例以选择任何电传打字机字体与任何其他字体包的组合。
\documentclass{article}
\renewcommand*\ttdefault{pcr}
\let\ipAddress\texttt
\begin{document}
The IP address is \ipAddress{100.64.0.0/10}.
\end{document}
实际上我更喜欢现代计算机电传打字机,它的设计是为了与家庭的其他部分协调一致。
答案2
这是你想要的?
\newcommand{\ipAddress}[1]{%
{\fontfamily{pcr}\selectfont%
#1%
}%
}
您没有提到您正在使用哪些包/引擎,所以这是我对问题所在最好的猜测。
要理解差异,请考虑扩展宏
\ipAddress{100.64.0.0/10} → {\fontfamily{pcr}\selectfont{}}{100.64.0.0/10}
如你所见,在ip排版之前,字体选择适用的组是关闭的。
相比之下,我的扩张是
\ipAddress{100.64.0.0/10} → {\fontfamily{pcr}\selectfont 100.64.0.0/10}
它应该可以做你想做的事。
一般来说,当您使用\newcommand{\macroname}[N]{DEF}
in创建命令时,DEF
您可以使用#1
to#N
作为想要N
使用参数的位置的占位符。
正如 @Andrew 所说,如果您使用换行符,DEF
它们会在宏扩展的上下文中进行解释,因此它们可能意味着“这里有一个空格”,而这不一定是您想要的。为了在代码中保持行分隔的同时消除它们,您可以在这些行的末尾添加注释。