我有一个间距问题,它似乎来自这两个包。
以下是 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{}
\fct
numprint
\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}