为了表示序列收敛到极限,通常的\rightarrow
对我来说似乎太短了。我的文档使用了 Michael Barr 的diagxy
包,它定义了\to
,而那个箭头太长了。
我怎样才能得到更合适长度的箭?
例子:
\documentclass[12pt]{article}
\usepackage{amsfonts}
\newcommand{\tendsto}{\mathrel{\rightarrow}}
\newcommand{\N}{\mathbb{N}}
\usepackage{diagxy} %% redefines \to
\linespread{1.21}
\begin{document}
Let $(x_{n})_{n \in \N} \tendsto x$ in $X$. %% too short?
Let $(x_{n})_{n \in \N} \to x$ in $X$. %% too long!
\end{document}
\usepackage{lucidabr}
我正在使用的实际字体,即 Lucida Bright(而不是\usepackage{amsfonts}
),问题更加明显:
\to
Barr 包中的较长箭头(对于函数符号来说,这是一个很好的长度,如$f \colon A \to B$
)在的这一部分中定义diagxy
:
\def\setwdth#1#2{\setbox0\hbox{$\labelstyle#1$}\wdth=\wd0%
\setbox0\hbox{$\labelstyle#2$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi}%
\def\topppp/#1/<#2>^#3_#4{\:%
\ifnum#2=0%
\setwdth{#3}{#4}\deltax=\wdth \divide \deltax by \ul%
\advance \deltax by \defaultmargin \ratchet{\deltax}{100}%
\else \deltax #2%
\fi%
\xy\ar@{#1}^{#3}_{#4}(\deltax,0) \endxy%
\:}%
\def\toppp/#1/<#2>^#3{\ifnextchar_{\topppp/#1/<#2>^{#3}}{\topppp/#1/<#2>^{#3}_{}}}%
\def\topp/#1/<#2>{\ifnextchar^{\toppp/#1/<#2>}{\toppp/#1/<#2>^{}}}%
\def\toop/#1/{\ifnextchar<{\topp/#1/}{\topp/#1/<0>}}%
\def\to{\ifnextchar/{\toop}{\toop/>/}}%
是否有合适的方法可以利用来自的代码diagxy
,或通过其他方式生成比 Barr 的箭头稍长\rightarrow
但不如其长的箭头\to
?
答案1
我想提请大家注意lucida-amsmath.pdf
在第22页,我们发现“收敛于”符号的“正常用法”恰好是\rightarrow
在公式(48)和(49)中。
的长度\rightarrow
由字体设计师选择。如果设计师不认为箭头“太小”或箭头条“太短”,那么我们也不应该这样做(如果您不同意,也许可以更改字体)。但如果你坚持设计自己的箭头,你称之为\tendsto
,那么你可以借用在lucidabr.dtx
:
\DeclareMathSymbol{\relbar@}{\mathord}{arrows}{45}
\def\relbar{\mathrel{\smash\relbar@}\mathrel{\mkern-2.5mu}}
% ...
\def\longrightarrow{\mathrel{\mkern4mu}\relbar\rightarrow}
我们看到,\longrightarrow
只需将 a\relbar
与 a连接起来\rightarrow
,然后使用\mathrel{\mkern4mu}
来调整此关系符号周围的间距即可。
因此,为了设计我们自己使用的箭头,我们可以在序言中添加以下内容:
% Adjust the `-2' in \mkern-2mu to suit your need
\newcommand*{\tendsto}{\mathrel{\mkern4mu}\relbar\mkern-2mu\rightarrow}
由于我没有 Lucida 字体,因此我只能-2mu
在上述定义中提供经验。请调整此长度以满足您的需要。值得指出的是箭的长度没有标准,因此您决定投入到此定制中的长度\tendsto
完全是主观的。添加:对于 Computer Modern,您可能会发现-8mu
看起来不错(\longrightarrow
用途\joinrel
,本质上\mkern-3mu
)。
添加:这种方法可能比\newcommand{\myrightarrow}{\xrightarrow{\hspace{10pt}}}
@nox建议的更好,因为:
- 这并不需要,尽管如果你有很多数学知识的话
amsmath
很可能你还是需要它。amsmath
- 这可以在脚本和第二个脚本级别正确缩放,因为它不依赖于绝对长度(如)
10pt
。您可以使用类似的东西0.8em
,但箭头无法正确缩放(好吧,\xrightarrow{...}
无论如何您都不应该在脚本中使用。它被设计为在其上方/下方放置文本)。
这两种方法本质上都使用了重新设计的箭头。
边注:我不建议使用包\to
中的重新定义diagxy
:箭头根本无法与 Computer Modern 或 Lucida Bright 融合。
使用现代计算机的插图
以下是使用 Computer Modern 的插图:
\documentclass[12pt]{article}
% Many font packages, including lucidabr, redefine things set up by amsmath
% So amsmath must come before math font settings
% See Section 1 of lucida-amsmath.pdf
\usepackage{amsmath}
\newcommand*{\myrightarrow}{\xrightarrow{\hspace{10pt}}}
\usepackage{amsfonts}
\newcommand*{\tendsto}{\relbar\mkern-8mu\rightarrow}
\newcommand{\N}{\mathbb{N}}
%\usepackage{diagxy} %% redefines \to
\newcommand*{\test}[1]{%
\makebox[7em][r]{\texttt{\textbackslash#1}}:
Let $(x_n)_{n \in \N} \csname#1\endcsname x$ in~$X$;
that is, \[\lim_{n \csname#1\endcsname \infty} x_n = x.\]}
\begin{document}
\noindent\test{to}
\test{tendsto}
\test{myrightarrow}
\end{document}