我有两个问题:
- 我可以在变量上方显示多少个点来表示其导数?(我读到过 4 是极限。仍然不确定)
- 我如何以一般形式打印比这些更多的点?
答案1
编辑:这篇文章后半部分的改进版本。
如果您确实想要,您可以定义一个新命令来包含任意数量的点,就像amsmath
三点和四点一样。下面是一个包含任意数量点的示例,使用multido
包:
\documentclass{article}
\usepackage{amsmath}
\usepackage{multido}
\makeatletter
\ams@newcommand{\vardot}[2]{%
{\mathop{#2\kern0pt}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
\hbox{\normalfont\multido{}{#1}{.}}\vss}}}}
\makeatother
\begin{document}
$\vardot{6}{x}$
\end{document}
该命令\vardot{n}{x}
将在 x 上打印 n 个点。
改良版
概括相关亨德里克·沃格特 (Hendrik Vogt) 的回答,我们得到了更好的输出,修复了原始amsmath
命令\dddot
和的许多印刷问题\ddddot
。此版本实现了命令\vardot[n]{x}
,其中n
是要放在上面的点数x
。该数字n
是一个可选参数,默认值为 1。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\usepackage{accents}
\ExplSyntaxOn\makeatletter
\renewcommand*\dddot[1]{%
\placeaccent{\acc@dot\mkern1.4mu\acc@dot\mkern1.4mu\acc@dot}{#1}%
}
\renewcommand*\ddddot[1]{%
\placeaccent{\acc@dot\mkern1.4mu\acc@dot\mkern1.4mu\acc@dot\mkern1.4mu\acc@dot}{#1}%
}
\NewDocumentCommand \vardot {O{1} m }
{
\int_compare:nNnTF
{#1} = {1}
{\dot #2}
{\placeaccent{\prg_replicate:nn {#1-1} {\acc@dot\mkern1.4mu}\acc@dot}{#2}}
}
\newcommand*\placeaccent[2]{%
\begingroup
\def\acc@dot{\kern-0.08em.\kern-0.08em}%
\def\acc@skip{\ifx\macc@style\displaystyle0.32
\else\ifx\macc@style\textstyle0.32
\else\ifx\macc@style\scriptstyle0.22
\else0.15\fi\fi\fi ex}%
\def\mathaccent##1##2{%
\setbox6\hbox{$\m@th\macc@style#1$}%
\@tempdima\wd4
\advance\@tempdima\macc@kerna
\advance\@tempdima-\wd6
\divide\@tempdima\tw@
\@tempdimb\z@
\ifdim\@tempdima<\z@ \@tempdimb-\@tempdima \@tempdima\z@ \fi
\vbox{\offinterlineskip
\moveright\@tempdima\box6
\kern\acc@skip
\moveright\@tempdimb\box4}%
}%
\macc@depth\@ne
\let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar
\mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}%
\macc@set@skewchar\relax
\let\mathaccentV\macc@nested@a
\macc@nested@a\relax111{#2}%
\endgroup
}
\makeatother\ExplSyntaxOff
\begin{document}
$\vardot[6]{x}$
\end{document}
我确信这段代码可以得到很大改进,因为我不是一位经验丰富的 TeX 程序员。我不确定将expl3
代码与 Hendrik Vogt 的 LaTeX 代码混合是否是个好主意,但它似乎可行。