LaTeX 可以很好地处理下标和上标,自动纠正各种大小和位置问题。我正在尝试构建一个像下标和上标一样工作的函数,但较小尺寸的项目直接放置在主符号的上方/下方/左侧/右侧,而不是直立/直下/左上/左下。
如果这样的命令已经存在,或者您对如何构建命令有建议,我一定会很感激您的指点或想法。
在此期间,我尝试了很多方法(例如\array
体操),但都存在问题。目前我正在考虑一种基于 TikZ 的方法,如下所示。
\newcommand{\putaround}[5]{
\begin{tikzpicture}[inner sep=0ex]
\node [label={[label distance=.1ex]below:$\scriptscriptstyle #2$},
label={[label distance=-.15ex]left:$\scriptscriptstyle #3$},
label={[label distance=.1ex]above:$\scriptscriptstyle #4$},
label={[label distance=-.15ex]right:$\scriptscriptstyle #5$}]
{$#1$}; %[minimum height=1ex,minimum width=1ex] {$\mathfrak A$};
\end{tikzpicture}
}
\[
\putaround{\mathrm H}{n}{m}{p}{q}
\]
第一个问题是,左侧和右侧条目的基线偏离了(如果将 替换为 ,这种情况会变得尤为明显m
)m'
。我尝试通过添加各种位置来调整标签锚定,anchor=mid
但无济于事。
我的问题是,有没有办法通过固定标签来纠正基线/对齐问题?
答案1
您只需设置text depth=0pt
左元素和右元素即可让 TikZ 忽略下降部,并text height=0.5ex
忽略上升部(感谢 Andrew!):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newcommand{\putaround}[5]{
\begin{tikzpicture}[inner sep=0ex]
\node [label={[label distance=.1ex]below:$\scriptscriptstyle #2$},
label={[label distance=-.15ex, text depth=0pt, text height=0.5ex]left:$\scriptscriptstyle #3$},
label={[label distance=.1ex]above:$\scriptscriptstyle #4$},
label={[label distance=-.15ex, text depth=0pt, text height=0.5ex]right:$\scriptscriptstyle #5$}]
{$#1$};
\end{tikzpicture}
}
\[
\putaround{\mathrm H}{n}{m'}{p}{q}
\]
\end{document}
答案2
我尝试通过在各个地方添加“anchor=mid”来调整标签锚定,但无济于事。
我也遇到了类似的无用回答我如何强制 TikZ 引脚角度? 使用与上述相同的 Extreme Hack,我得到了一些有用的方法。关键细节如下:
- (实际上不相关)
anchor=base
在主节点和baseline=0pt
上使用tikzpicture
。 - 对于侧面标签,不要使用自动定位(如
label=above:X
)。使用label position
并设置标签锚点。 - 但是要设置标签锚点,您需要进行破解,因为自动定位将覆盖您的明确选择。
代码:
\documentclass{article}
%\url{https://tex.stackexchange.com/q/97201/86}
\usepackage{tikz}
\makeatletter
\tikzset{reset label anchor/.code={%
\let\tikz@auto@anchor=\pgfutil@empty
\def\tikz@anchor{#1}
},
reset label anchor/.default=center
}
\makeatother
\newcommand{\putaround}[5]{
\begin{tikzpicture}[inner sep=0ex,baseline=0pt]
\node [anchor=base,label={[label
distance=.1ex]below:$\scriptscriptstyle #2$},
label={[label distance=-.15ex,label position=mid west,reset label
anchor=base east]:$\scriptscriptstyle #3$},
label={[label distance=.1ex]above:$\scriptscriptstyle #4$},
label={[label distance=-.15ex,label position=mid east,reset label
anchor=base west]:$\scriptscriptstyle #5$}]
{$#1$}; %[minimum height=1ex,minimum width=1ex] {$\mathfrak A$};
\end{tikzpicture}
}
\begin{document}
\[
\putaround{\mathrm H}{n}{m'}{p}{q} \mathrm{H}
\]
\end{document}
结果: