特定命令让用户选择点数

特定命令让用户选择点数

从这个简单的代码开始,

\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\[\begin{pmatrix}
a \\
b\\
\ldots \ldots
\end{pmatrix}
\]
\end{document}

在此处输入图片描述

我的问题是:

有没有一个特定的包可以创建精确的用户定义的暂停点?通常总是三个点,例如,为了得到六个点,我必须编写两次特定的点命令。但如果你想要一个默认数字,14,7,它们不是三的倍数,你会采用什么解决方案?

答案1

根据的定义\ldots

\documentclass{article}
%For older distributions
\usepackage{expl3}
%%%%%%%%%%%%%%%%%%%%%%%%
\ExplSyntaxOn 
\cs_new_protected:Npn \sebastiano_alotofdots:n #1{
\mathinner{
\prg_replicate:nn{#1}{\ldotp}
}
}
\newcommand{\alotofdots}[1][3]{\sebastiano_alotofdots:n{#1}}
\ExplSyntaxOff 
\begin{document}
$\alotofdots$

$\alotofdots[7]$

$\alotofdots[14]$
\end{document}

在此处输入图片描述

你可以重新定义\ldots以便它接受可选参数,但我不推荐这样做。

编辑

感谢 Andrew 和 Phelype 的建议。使用xparse并采纳 Andrew 提出的优雅建议,更灵活的方法可能是(颜色突出显示):

\documentclass{article}
%For older distributions
\usepackage{expl3}
%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{xparse}
\ExplSyntaxOn 
%Thanks, Andrew! This looks way better than my previous example. :) 
\NewDocumentCommand\alotofdots{ D(){\ldotp} O{3}}
{\mathinner{\prg_replicate:nn{#2}{#1}}}
\ExplSyntaxOff 
\begin{document}
    %Three dots (just the same as \ldots)
    $\alotofdots$
    %Number of repetitions is specified by [number]
    $\alotofdots[4]$
    %The dot can be changed by (another symbol)
    %\cdot does not work here
    $\alotofdots(\cdotp)$
    %And now two arguments
    $\alotofdots(\cdotp)[7]$    
\end{document}

在此处输入图片描述

答案2

这是另一种方法,\dotfill在长度为点数加 1 的框内使用,每次1ex。默认情况下,由 产生三个点\ndots,可选参数会更改此设置,以便代码

\documentclass{article}
\makeatletter
\newcommand\ndots[1][3]{%
  \@tempdima=\dimexpr#1ex+1ex\relax%
  \hbox to \@tempdima{\dotfill}%
}
\makeatletter%

\begin{document}

default: \ndots

1: \ndots[1]

2: \ndots[2]

3: \ndots[3]

4: \ndots[4]

5: \ndots[5]

6: \ndots[6]

7: \ndots[7]

8: \ndots[8]

9: \ndots[9]


\end{document}

生成:

在此处输入图片描述

相关内容