我正在使用 XeTeX 和 tikz 为一个不常见的键盘布局 (gb + apl) 生成一份备忘单。灵感来自这个答案之后,我设置了一个命令来快速关联各个键所绑定的符号:
\tikzstyle{abstract}=[
rectangle,
draw=black,
rounded corners,
fill=gray!20,
drop shadow,
text=black]
\newcommand{\mykey}[4]{%
\resizebox{1.25cm}{1.25cm}{%
\begin{tikzpicture}
\node [abstract, rectangle split, rectangle split parts=2]
{\textbf{\footnotesize{#2} \hfill \footnotesize{#4}} \nodepart{second}\textbf{\footnotesize{#1} \hfill \footnotesize{#3}}};%
\end{tikzpicture}}}
然后我使用这个命令来生成整个键盘,如下所示:
\begin{document}
\mykey{a}{A}{⍺}{⍶}
\mykey{s}{S}{⌈}{}
% etc
\end{document}
但有几个小细节我不太喜欢:
- 我希望每个键内的两列之间的距离能够更远一些。
- 我希望带有三个符号的键的顶行与左对齐(例如,在带有 Y 的键中,大写字母 Y 应该与小写字母 y 对齐)。
编辑:此外,我不确定调用是否\resizebox
是实现相等方框的最佳选择。
先谢谢您的帮助!
如果有人感兴趣的话,我正在使用我下载的字体 APL333这里
生成上述页面的完整代码如下:
\documentclass[12pt]{scrartcl}
\usepackage[margin=1cm]{geometry}
\usepackage{fontspec}
\setmainfont{APL333}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,shadows}
\tikzstyle{abstract}=[
rectangle,
draw=black,
rounded corners,
fill=gray!20,
drop shadow,
text=black]
\newcommand{\mykey}[4]{%
\resizebox{1.25cm}{1.25cm}{%
\begin{tikzpicture}
\node [abstract, rectangle split, rectangle split parts=2]
{\textbf{\footnotesize{#2} \hfill \footnotesize{#4}} \nodepart{second}\textbf{\footnotesize{#1} \hfill \footnotesize{#3}}};%
\end{tikzpicture}}}
\begin{document}
\mykey{`}{¬}{⋄}{⌺}
\mykey{1}{!}{¨}{⌶}
\mykey{2}{"}{¯}{⍫}
\mykey{3}{£}{<}{⍒}
\mykey{4}{\$}{≤}{⍋}
\mykey{5}{\%}{=}{⌽}
\mykey{6}{\textasciicircum}{≥}{⍉}
\mykey{7}{\&}{>}{⊖}
\mykey{8}{*}{≠}{⍟}
\mykey{9}{(}{∨}{⍱}
\mykey{0}{)}{∧}{⍲}
\mykey{-}{\_}{×}{ }
\mykey{=}{+}{÷}{⌹}
\mykey{q}{Q}{?}{⍰}
\mykey{w}{W}{⍵}{⍹}
\mykey{e}{E}{∊}{⍷}
\mykey{r}{R}{⍴}{⌾}
\mykey{t}{T}{\textasciitilde}{⍨}
\mykey{y}{Y}{↑}{}
\mykey{u}{U}{↓}{}
\mykey{i}{I}{⍳}{⍸}
\mykey{o}{O}{○}{⍥}
\mykey{p}{P}{*}{⍣}
\mykey{[}{\{}{←}{⍞}
\mykey{]}{\}}{→}{⍬}
\mykey{a}{A}{⍺}{⍶}
\mykey{s}{S}{⌈}{}
\mykey{d}{D}{⌊}{}
\mykey{f}{F}{\_}{}
\mykey{g}{G}{∇}{⍢}
\mykey{h}{H}{∆}{}
\mykey{j}{J}{∘}{⍤}
\mykey{k}{K}{'}{⌸}
\mykey{l}{L}{⎕}{⌷}
\mykey{;}{:}{⍎}{≡}
\mykey{'}{@}{⍕}{≢}
\mykey{\#}{\textasciitilde}{⊢}{⊣}
\mykey{\textbackslash}{|}{⊢}{⊣}
\mykey{z}{Z}{⊂}{⊆}
\mykey{x}{X}{⊃}{}
\mykey{c}{C}{∩}{}
\mykey{v}{V}{∪}{}
\mykey{b}{B}{⊥}{⍭}
\mykey{n}{N}{⊤}{⍡}
\mykey{m}{M}{|}{∥}
\mykey{,}{<}{⍝}{⍪}
\mykey{.}{>}{⍀}{⍙}
\mykey{/}{?}{⌿}{⍠}
\end{document}
答案1
也许matrix
在这里会有用,请参见下面代码中的示例。
这样做的问题\resizebox
是,如果符号的大小略有不同,则所有内容的缩放量也会略有不同。所以我认为这不是一个好主意。我可能只是将text width
/ height
/设置depth
为足够大的值。
与原始答案相比,我使用了不同的ampersand replacement
(因为\&
是键中的符号之一),并将每个矩阵条目包装在中{}
。
\documentclass[12pt]{scrartcl}
\usepackage[margin=1cm]{geometry}
\usepackage{fontspec}
\setmainfont{APL333}
\usepackage{tikz}
\tikzset{abstract/.style={
rectangle,
draw=black,
rounded corners,
fill=gray!20,
drop shadow,
text=black}
}
\usetikzlibrary{shadows,shapes.multipart, matrix}
\newcommand{\mykey}[4]{%
\begin{tikzpicture}
\matrix[
abstract,
matrix of nodes,
column sep=3pt, % <-- modify this to change the column spacing
nodes={
font=\footnotesize\bfseries,
anchor=base,
text width=1.1em, text depth=0.6ex, text height=1.7ex, % these may need fine tuning
align=center
},
name=m,
ampersand replacement=\NewCol,
inner sep=0,
]
{
{#2} \NewCol {#4} \\
{#1} \NewCol {#3} \\
};
\draw [very thin] (m.east) -- (m.west);
\end{tikzpicture}}
\begin{document}
\mykey{`}{¬}{⋄}{⌺}
\mykey{1}{!}{¨}{⌶}
\mykey{2}{"}{¯}{⍫}
\mykey{3}{£}{<}{⍒}
\mykey{4}{\$}{≤}{⍋}
\mykey{5}{\%}{=}{⌽}
\mykey{6}{\textasciicircum}{≥}{⍉}
\mykey{7}{\&}{>}{⊖}
\mykey{8}{*}{≠}{⍟}
\mykey{9}{(}{∨}{⍱}
\mykey{0}{)}{∧}{⍲}
\mykey{-}{\_}{×}{ }
\mykey{=}{+}{÷}{⌹}
\mykey{q}{Q}{?}{⍰}
\mykey{w}{W}{⍵}{⍹}
\mykey{e}{E}{∊}{⍷}
\mykey{r}{R}{⍴}{⌾}
\mykey{t}{T}{\textasciitilde}{⍨}
\mykey{y}{Y}{↑}{}
\mykey{u}{U}{↓}{}
\mykey{i}{I}{⍳}{⍸}
\mykey{o}{O}{○}{⍥}
\mykey{p}{P}{*}{⍣}
\mykey{[}{\{}{←}{⍞}
\mykey{]}{\}}{→}{⍬}
\mykey{a}{A}{⍺}{⍶}
\mykey{s}{S}{⌈}{}
\mykey{d}{D}{⌊}{}
\mykey{f}{F}{\_}{}
\mykey{g}{G}{∇}{⍢}
\mykey{h}{H}{∆}{}
\mykey{j}{J}{∘}{⍤}
\mykey{k}{K}{'}{⌸}
\mykey{l}{L}{⎕}{⌷}
\mykey{;}{:}{⍎}{≡}
\mykey{'}{@}{⍕}{≢}
\mykey{\#}{\textasciitilde}{⊢}{⊣}
\mykey{\textbackslash}{|}{⊢}{⊣}
\mykey{z}{Z}{⊂}{⊆}
\mykey{x}{X}{⊃}{}
\mykey{c}{C}{∩}{}
\mykey{v}{V}{∪}{}
\mykey{b}{B}{⊥}{⍭}
\mykey{n}{N}{⊤}{⍡}
\mykey{m}{M}{|}{∥}
\mykey{,}{<}{⍝}{⍪}
\mykey{.}{>}{⍀}{⍙}
\mykey{/}{?}{⌿}{⍠}
\end{document}