如何让 \dots 更紧凑?或者还有其他方法吗?

如何让 \dots 更紧凑?或者还有其他方法吗?

我该如何使其\dots更紧凑?我更喜欢将点靠得更近一些,以节省长方程式中的水平空间。

或者,是否存在另一个比 更紧凑的宏\dots?这将是更好的选择,因为正则\dots仍可在其他情况下使用。

答案1

这个怎么样?

\documentclass{article}
\newcommand\mydots{\hbox to 1em{.\hss.\hss.}}
\begin{document}

Hello\dots

Hello again\mydots

\end{document}

或者,如果您希望保留所有“干净”的 LaTeX 命令:

\newcommand\mydots{\makebox[1em][c]{.\hfil.\hfil.}}

进一步考虑的是你是否关心数学模式。标准\dots命令会仔细检查我们是否处于数学模式并执行正确的操作。如果你想担心这个,那么你需要这个:

\newcommand\mydots{\ifmmode\ldots\else\makebox[1em][c]{.\hfil.\hfil.}\fi}

在此处输入图片描述

为了使用此解决方案更改点的间距,您需要更改省略号的整体宽度。在上面的示例中,我将其1em加宽,然后\hss\hfil命令根据需要扩展以使点均匀分布。

如果您的省略号后面有更多文本,则还有另一个考虑因素:您是否希望在省略号后留有内置空格(如评论中指出的那样)。原始\dots命令后面有少量空格,但我上面建议的替换没有。例如

在此处输入图片描述

要解决此问题,您可以手动在其后添加一个细空格,或者将定义修改为:

\newcommand\mydots{\ifmmode\ldots\else\makebox[1em][c]{.\hfil.\hfil.}\thinspace\fi}

答案2

这里还有另一种选择:扩展ellipsis包以在数学模式下工作,除了添加两个维度(\ellipsisbeforegap\ellipsisaftergap,如果设置为零,它具有与ellipsis包中相同的行为)。

\documentclass{scrartcl}

\usepackage{mathtools}
\usepackage{ellipsis}

\makeatletter
\renewcommand*{\mathellipsis}{%
  \mathinner{%
    \kern\ellipsisbeforegap%
    {\ldotp}\kern\ellipsisgap%
    {\ldotp}\kern\ellipsisgap%
    {\ldotp}\kern\ellipsisaftergap%
  }%
}
\renewcommand*{\dotsb@}{%
  \mathinner{%
    \kern\ellipsisbeforegap%
    {\cdotp}\kern\ellipsisgap%
    {\cdotp}\kern\ellipsisgap%
    {\cdotp}\kern\ellipsisaftergap%
  }%
}
\renewcommand*{\@cdots}{%
  \mathinner{%
    \kern\ellipsisbeforegap%
    {\cdotp}\kern\ellipsisgap%
    {\cdotp}\kern\ellipsisgap%
    {\cdotp}\kern\ellipsisaftergap%
  }%
}
\renewcommand*{\ellipsis@default}{%
  \ellipsis@before
  \kern\ellipsisbeforegap
  .\kern\ellipsisgap
  .\kern\ellipsisgap
  .\kern\ellipsisgap
  \ellipsis@after\relax}
\renewcommand*{\ellipsis@centered}{%
  \ellipsis@before
  \kern\ellipsisbeforegap
  .\kern\ellipsisgap
  .\kern\ellipsisgap
  .\kern\ellipsisaftergap
  \ellipsis@after\relax}
\AtBeginDocument{%
  \DeclareRobustCommand*{\dots}{%
    \ifmmode\@xp\mdots@\else\@xp\textellipsis\fi}}
\def\ellipsisgap{.1em}
\def\ellipsisbeforegap{.05em}
\def\ellipsisaftergap{.05em}
\makeatother

\begin{document}

a \dots\ b

a\dots b

\[ a + \dots + b \]

\end{document}

还,我的这个问题如果您想为不同的字形(例如,,,,,!等)配置点后的间距,?这可能会很有趣。,;

答案3

或者使用字距调整:

% arara: pdflatex

\documentclass{article}
\newcommand*{\myDots}{\ifmmode\mathellipsis\else.\kern-0.13em.\kern-0.13em.\fi} % touching at \kern-0.1725em

\begin{document}
\myDots

\dots 

$\myDots$

$\dots$
\end{document}

在此处输入图片描述

如果您希望数学版本采用不同的字距,您只需\mathellipsis用其他内容替换即可。

更新:为了完全控制数学和文本模式,您可以使用以下命令:\newcommand{\myDots}{\ifmmode\mathinner{\ldotp\kern-0.2em\ldotp\kern-0.2em\ldotp}\else.\kern-0.13em.\kern-0.13em.\fi}


第二种可能性(仅适用于文本模式)是包ellipsis

% arara: pdflatex

\documentclass{article}
\usepackage{ellipsis} 
\renewcommand{\ellipsisgap}{0.01em}

\begin{document}
\dots $\dots$
\end{document}

相关内容