我有以下代码:
\documentclass[11pt]{article}
\usepackage{amssymb,amsthm,amsmath}
\newcommand{\norm}[1]{\lVert #1 \rVert_2}
\begin{document}
\begin{displaymath}
\norm{\cdot}=...
\end{displaymath}
\end{document}
我想在标准中的点之前和之后添加一点空格,因为它现在在垂直线之间有点挤在一起。是否有输出相同的命令可以自动执行此操作,还是我应该每次\cdot
手动插入空格(例如使用)?~
答案1
我甚至会比 Mico 走得更远,为什么不将空的参数标记嵌入到宏本身中呢?
\documentclass[a4paper]{memoir}
\usepackage{mathtools,etoolbox,amssymb}
\newcommand\emptyarg{{}\cdot{}}
\DeclarePairedDelimiterX\norm[1]\lVert\rVert{
\ifblank{#1}{\emptyarg}{#1}
}
\begin{document}
\[
\norm{}: A \to B \qquad \norm{X}
\]
\end{document}
顺便说一句:CTAN 的最新mathtools
版本现在包含一个构建L^2
规范的工具,这样人们就不必一直_2
手动添加。
答案2
您可以定义一个名为“ \widecdot
”的新宏,其两边\cdot
用细空格 ( ) 包围。注意:我不会直接重新定义,因为这个宏也往往被其他宏内部使用。\,
\cdot
顺便说一句,你的定义\norm
有点不太理想,因为下标(例如2
你示例中的)设置得不够低。最好使用\DeclarePairedDelimiter
宏数学工具包;比较下面第二个等式中\norm
和宏的输出。\Norm
\documentclass[11pt]{article}
\usepackage{amssymb,mathtools}
\newcommand{\norm}[1]{\lVert #1 \rVert_2}
\DeclarePairedDelimiter{\Norm}{\lVert}{\rVert}
\newcommand\widecdot{\,\cdot\,}
\begin{document}
\[ \norm{\cdot} \text{ vs.\ } \norm{\widecdot}\]
\[ \norm{\widecdot}\text{ vs.\ } \Norm{\widecdot}_2 \]
\end{document}