tikz 节点中文本的正确水平对齐

tikz 节点中文本的正确水平对齐

我正在使用 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}

我对结果非常满意: gb-apl 键盘布局

但有几个小细节我不太喜欢:

  • 我希望每个键内的两列之间的距离能够更远一些。
  • 我希望带有三个符号的键的顶行与左对齐(例如,在带有 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}

相关内容