我想要一个命令,可以将$\varhexagon$
latex 中的 wasysym 包的大小缩小到非常小的尺寸。
原则上,这可以实现我想要的功能,但显然在数学模式下不允许使用$\tiny \varhexagon$
命令“ ”。tiny
有没有办法解决这个问题? - 请注意,\scriptscriptstyle
似乎没有给出与相同的大小\tiny
。
简而言之,我想要一个具有同样功能$A_{\tiny \varhexagon}$
但不使用非法命令的命令\tiny
。
答案1
确实,\tiny
这是一个文本模式命令,因此不允许在数学模式下使用。
你可能正在寻找的是
\newcommand\tinyvarhexagon{\vcenter{\hbox{\scalebox{0.5}{$\varhexagon$}}}}
其中是软件包\scalebox
提供的宏,和是 TeX“原始”。对应于字体大小线性减少 50%;因此是缩放因子。 根据此定义,小六边形垂直居中于数学轴上。 如果您希望将调整大小的符号放置在基线上,只需省略“包装器”。graphic
\vcenter
\hbox
\tiny
0.5
\vcenter{\hbox{...}}
\documentclass{article}
\usepackage{wasysym} % for "\varhexagon" macro
\usepackage{graphicx}% for "\scalebox" macro
\newcommand\tinyvarhexagon{\vcenter{\hbox{\scalebox{0.5}{$\varhexagon$}}}}
% ("\vcenter" and "\hbox" are TeX primitives)
\begin{document}
$a\varhexagon a$ $a\tinyvarhexagon a$ $a\scalebox{0.5}{$\varhexagon$} a$
$A_{\varhexagon}$ $A_{\tinyvarhexagon}$ $A_{\scalebox{0.5}{$\varhexagon$}}$
\end{document}
答案2
您可以使用不同的缩放因子加载字体:
\documentclass{article}
\usepackage{wasysym} % just for comparison
\DeclareFontFamily{U}{wasysmall}{}
\DeclareFontShape{U}{wasysmall}{m}{n}{
<-5.5> s*[0.75] wasy5
<5.5-6.5> s*[0.75] wasy6
<6.5-7.5> s*[0.75] wasy7
<7.5-8.5> s*[0.75] wasy8
<8.5-9.5> s*[0.75] wasy9
<9.5-> s*[0.75] wasy10
}{}
\DeclareFontShape{U}{wasysmall}{b}{n}{
<-5.5> s*[0.75] wasyb5
<5.5-6.5> s*[0.75] wasyb6
<6.5-7.5> s*[0.75] wasyb7
<7.5-8.5> s*[0.75] wasyb8
<8.5-9.5> s*[0.75] wasyb9
<9.5-> s*[0.75] wasyb10
}{}
\DeclareFontShape{U}{wasysmall}{bx}{n}{ <-> sub * wasysmall/b/n}{}
\DeclareSymbolFont{wasysmall}{U}{wasysmall}{m}{n}
\SetSymbolFont{wasysmall}{bold}{U}{wasysmall}{b}{n}
\DeclareMathSymbol{\smallhexagon}{\mathord}{wasysmall}{57}
\begin{document}
{\tiny\varhexagon} $\scriptstyle\smallhexagon$ $A_{\smallhexagon}$
\end{document}
请注意,wasysym
不需要加载,我只是为了进行比较。
您可以节省一个符号字体:
\documentclass{article}
\usepackage{amsmath}
\DeclareFontFamily{U}{wasysmall}{}
\DeclareFontShape{U}{wasysmall}{m}{n}{
<-5.5> s*[0.75] wasy5
<5.5-6.5> s*[0.75] wasy6
<6.5-7.5> s*[0.75] wasy7
<7.5-8.5> s*[0.75] wasy8
<8.5-9.5> s*[0.75] wasy9
<9.5-> s*[0.75] wasy10
}{}
\newcommand{\smallhexagon}{\text{\usefont{U}{wasysmall}{m}{n}\symbol{57}}}
\begin{document}
$A_{\smallhexagon}$
\end{document}
如果您只是需要符号改变下标的大小,您可以用不同的方式做:
\documentclass{article}
\usepackage{amsmath}
\usepackage{wasysym}
\DeclareMathSymbol{\mhexagon}{\mathord}{wasy}{57}
\begin{document}
$A_{\varhexagon}$ (wrong)
$A_{\mhexagon}$
\end{document}
答案3
该amsmath
软件包还提供了\text
允许在数学模式中使用文本模式命令而不会发出警告的命令(另请参阅@egreg 的回答多于)。
梅威瑟:
\documentclass{article}
\usepackage{amsmath}
\usepackage{wasysym}
\begin{document}
A{\tiny\varhexagon}
$A_{\text{\tiny\varhexagon}}$
\end{document}
结果:
答案4
如您所见,这种方法既适用于较小的文本尺寸,也适用于较小的数学尺寸。
\documentclass{article}
\usepackage{wasysym,scalerel,lmodern}
\newcommand\xvarhexagon{\scaleto{\varhexagon}{1.4\LMex}}
\begin{document}
$\varhexagon x\xvarhexagon
\scriptstyle x\xvarhexagon
\scriptscriptstyle x\xvarhexagon$
\small$\varhexagon x\xvarhexagon
\scriptstyle x\xvarhexagon
\scriptscriptstyle x\xvarhexagon$
\footnotesize$\varhexagon x\xvarhexagon
\scriptstyle x\xvarhexagon
\scriptscriptstyle x\xvarhexagon$
\scriptsize$\varhexagon x\xvarhexagon
\scriptstyle x\xvarhexagon
\scriptscriptstyle x\xvarhexagon$
\tiny$\varhexagon x\xvarhexagon
\scriptstyle x\xvarhexagon
\scriptscriptstyle x\xvarhexagon$
\normalsize$x_{\xvarhexagon} =3\xvarhexagon y$
\end{document}