numprint 和 newtxmath 包的间距问题

numprint 和 newtxmath 包的间距问题

我有一个间距问题,它似乎来自这两个包。

以下是 MWE:

\documentclass[10pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{newtxtext}
\usepackage[frenchmath]{newtxmath}
%\usepackage[np,autolanguage]{numprint}
 
\newcommand*{\fct}[5]{%
\begin{array}[t]{@{}l@{}c@{}c@{}c}
  #1 \colon & #2 & \; \longrightarrow & \; #3 \\ 
            & #4 & \; \longmapsto     & \; #5 
\end{array}}

\begin{document}
  $f\colon X\longrightarrow Y$
  
  $\fct{f}{X}{Y}{x}{\sin x}$
\end{document}

结果如下:

在此处输入图片描述

这正是我想要的命令\fct:两行中的:X完全对齐。但要实现这一点,我必须注释掉这个numprint包。如果我不注释这个包,结果如下:

在此处输入图片描述

X移至左侧。有人可以解释原因并告诉我如何修改\fct命令吗?

答案1

该问题不是由于numprint,而是由于array包加载 。

一个简单的例子是

\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{array}

\newcommand*{\fct}[5]{%
\begin{array}[t]{@{}l@{}c@{}c@{}c}
  #1 \colon & #2 & \; \longrightarrow & \; #3 \\
            & #4 & \; \longmapsto     & \; #5
\end{array}}

\begin{document}
  $f\colon X\longrightarrow Y$

  $\fct{f}{X}{Y}{x}{\sin x}$
\end{document}

我建议采用更好的方法来定义\fct命令:错误的一侧有一些间距。

\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{array}

\newcommand*{\fct}[5]{%
\begin{array}[t]{@{}l@{}c@{}c@{}c@{}}
  #1 \colon {} & #2 & {}\longrightarrow{} & #3 \\
               & #4 & {}\longmapsto{}     & #5
\end{array}}

\begin{document}
  $f\colon X\longrightarrow Y$

  $\fct{f}{X}{Y}{x}{\sin x}$
\end{document}

在此处输入图片描述

答案2

如果在宏的定义中更改\colon为,无论包是否加载,您都会得到相同的输出。\colon{}\fctnumprint

在此处输入图片描述

\documentclass[10pt,a4paper]{article}

\usepackage[utf8]{inputenc} % that's the default nowadays
\usepackage[T1]{fontenc}
\usepackage{newtxtext}
\usepackage[frenchmath]{newtxmath}
\usepackage[np,autolanguage]{numprint}

\newcommand*{\fct}[5]{%
\begin{array}[t]{@{}l@{}c@{}c@{}c}
  #1 \colon{} & #2 & \; \longrightarrow & \; #3 \\ 
              & #4 & \; \longmapsto     & \; #5 
\end{array}}

\begin{document}
  $f\colon X\longrightarrow Y$
  
  $\fct{f}{X}{Y}{x}{\sin x}$
\end{document}

相关内容