由于符号列表中没有地图标记符号(至少我找不到它),我决定用 TikZ 绘制它。就是这样:
\documentclass{article}
\usepackage{tikz}
\newcommand{\point}{\tikz{
\draw [rounded corners,blue, fill=blue](0,0) .. controls (-.05em,.2ex) and (-.3em,1.2ex) .. (0em,2.2ex) .. controls (.3em,1.2ex) and (.05em,.2ex) .. (0,0);
\draw [blue,fill=white](0,1.15ex) circle (0.12em);}
}
\begin{document}
\tiny tiny \point text
\normalsize normal \point text
\Huge huge \point text
\end{document}
问题是,如果我更改字体大小,它就无法正确缩放,例如{\Large text \point text}
我是否需要为使用的每种尺寸绘制不同的符号,或者有没有办法让它正确缩放?
答案1
问题在于rounded corners
部分,它与字体大小无关。因此解决方案是设置rounded corners=<x>ex
,然后它取决于字体大小。以下示例展示了一个解决方案,并用简单的角说明了该问题:\cornerI
以绝对相同的半径进行圆角处理,而\cornerII
以与字体大小成比例的半径进行圆角处理。
\documentclass{article}
\usepackage{tikz}
\newcommand{\point}{\tikz{
\filldraw [rounded corners=0.6ex,blue] (0,0)
.. controls (-.05em,.2ex) and (-.3em,1.2ex)
.. (0em,2.2ex) .. controls (.3em,1.2ex) and (.05em,.2ex) .. (0,0);
\draw [blue,fill=white](0,1.15ex) circle (0.12em);
}}
\newcommand{\cornerI}{\tikz{
\draw [rounded corners] (0,0) -| (2ex,2ex);
}}
\newcommand{\cornerII}{\tikz{
\draw [rounded corners=0.6ex] (0,0) -| (-2ex,2ex);
}}
\begin{document}
\tiny text \point\ text \cornerI\,\cornerII
\normalsize text \point\ text \cornerI\,\cornerII
\Huge text \point\ text \cornerI\,\cornerII
\end{document}
em
此外,混合使用和并不是一个好主意,ex
因为它们的缩放方式不同。请看以下示例:非常\Square
适合\Huge
但不适合较小的尺寸。
原因是 1em/1ex 的比例对于所有字体大小来说并不相同……
…甚至它还取决于字体本身。
\documentclass[fleqn]{article}
\usepackage{tikz,parskip}
\makeatletter
\newlength{\tmpa}
\newlength{\tmpb}
\newlength{\tmpc}
\newcommand{\EmExTest}[2][Computer Modern]{{%
#2%
\setlength{\tmpa}{1em}%
\setlength{\tmpb}{1ex}%
\pgfmathsetmacro\tmpc{\tmpb/\tmpa}%
\normalsize#1 at \textbackslash\expandafter\@gobble\string#2:
\[
\frac{1\,\mathrm{ex}}{1\,\mathrm{em}}
= \frac{\strip@pt\tmpb\,\mathrm{pt}}{\strip@pt\tmpa\,\mathrm{pt}}
= \tmpc
\]\par
}}
\makeatother
\newcommand{\Square}{\tikz{
\fill (0,0) rectangle (10em,21.31ex);
}}
\begin{document}
\EmExTest{\tiny}
\EmExTest{\normalsize}
\EmExTest{\Huge}
\tiny \Square\quad
\normalsize \Square\quad
\Huge \Square
\EmExTest{\normalsize}% Computer Modern
\EmExTest[Palatino]{\normalsize\fontfamily{pxr}\selectfont}
\EmExTest[Helvetica]{\normalsize\fontfamily{phv}\selectfont}
\end{document}