使用 Linux Biolinum 键盘和 fontspec 的最佳方法是什么?

使用 Linux Biolinum 键盘和 fontspec 的最佳方法是什么?

我正在尝试在文档中排版键盘快捷键,例如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}

在此处输入图片描述

相关内容