我正在尝试在文档中排版键盘快捷键,例如CTRL+ SHIFT+ S。Linux Libertine 字体系列包括一个不错的键盘字体我想使用它。将它与 fontspec 一起使用的最佳方法是什么?我尝试了以下方法,虽然有效,但我的 latex-foo 并不是那么好,我想知道是否有更好的方法。我也尝试过使用\char"XXXX
而不是直接使用 unicode 字符,但没有成功。
\newfontface{\keyboardfont}{Linux Biolinum Keyboard O}
\newcommand{\key}[1]{{\keyboardfont #1}}
\newcommand{\ctrl}{\key{}}
\newcommand{\shift}{\key{}}
\newcommand{\alt}{\key{}}
% etc.
这允许您使用\key
宏来排版“普通”键,但所有特殊键都必须单独设置。例如,您可以输入:
\ctrl+\shift+\key{S}
结果是:
有没有办法定义一个“智能”\key
命令来理解特殊键?这样上面的命令就可以像这样输入?
\key{ctrl}+\key{shift}+\key{S}
不幸的是,类似的问题没有提供 fontspec 的答案:LaTeX 的键盘字体
答案1
以下建议可能不是最好的解决方案。该包libertineotf
提供了很多可通过命令访问的键,\LKey<name>
例如\LKeyEnter
和 命令\LKey{<glyph name>}
。这可用于定义几乎可执行您想要的操作的命令(使用etoolbox
'\ifcsdef
和\csuse
):
\newcommand{\key}[1]{%
\ifcsdef{LKey#1}
{\csuse{LKey#1}}
{\LKey{#1}}%
}
最大的缺点是,对于某些键,仅存在德语命令(例如,有\LKeyStrg
但没有\LKeyCtrl
),所以我们需要做一些额外的工作:
\newcommand*\LKeyCtrl{\LKey{C_t_r_l}}
\newcommand*\LKeySpace{\LKey{uniE18C}}
% let German names to English ones:
\let\LKeyStrg\LKeyCtrl
\let\LKeyEntf\LKeyDel
% add Gnglish equivalents of combinations
\let\LKeyCtrlX\LKeyStrgX
\let\LKeyShiftCtrlX\LKeyShiftStrgX
\let\LKeyCtrlAltX\LKeyStrgAltX
\let\LKeyCtrlAltDel\LKeyReset
有了这些定义,你可以\key
像这样使用:
\key{Ctrl}+\key{Shift}+\key{S}
\key{Enter} \key{Alt} \key{F}{12}
完整示例:
\documentclass{article}
\usepackage{fontspec}
\usepackage{libertineotf}
\usepackage{etoolbox}% for \ifcsdef, \csuse
% add not directly accessible macros:
\newcommand*\LKeyCtrl{\LKey{C_t_r_l}}
\newcommand*\LKeySpace{\LKey{uniE18C}}
% let German names to English ones:
\let\LKeyStrg\LKeyCtrl
\let\LKeyEntf\LKeyDel
% add Gnglish equivalents of combinations
\let\LKeyCtrlX\LKeyStrgX
\let\LKeyShiftCtrlX\LKeyShiftStrgX
\let\LKeyCtrlAltX\LKeyStrgAltX
\let\LKeyCtrlAltDel\LKeyReset
\newcommand{\key}[1]{%
\ifcsdef{LKey#1}
{\csuse{LKey#1}}
{\LKey{#1}}%
}
% for this example only:
\parindent=0pt
\begin{document}
\key{Ctrl}+\key{Shift}+\key{S} \\
\key{ShiftCtrlX}{S} \\
\key{CtrlAltX}{S}
\key{Enter} \key{Alt} \key{F}{12} \key{Esc} \key{Del} \key{Ins} \key{Back} \key{Tab} \\
\key{arrowleft} \key{comma} \key{Win} \key{Menu} \key{AltF}{8} \key{Reset}
\key{L}\key{i}\key{n}\key{u}\key{x}\key{Space}%
\key{B}\key{i}\key{o}\key{l}\key{i}\key{n}\key{u}\key{m}\key{Space}%
\key{K}\key{e}\key{y}\key{b}\key{o}\key{a}\key{r}\key{d}\key{Space}\key{O}
\end{document}