11

It seems to be common practice, when writing mathematics, to add punctuation to displayed formulas.

Is there any trick to avoid putting the punctuation mark inside the formula?

I want to avoid

Consider the function
\[ \sin(x).\]

I'd rather have something like:

Consider the function
\[ \sin(x)\].

But of course the full stop is displayed below the formula.

Is there a clever way to separate formulas and punctuation in LaTeX?

4

4 回答 4

10
\catcode`\@=11 
\let\seveendformula\]
\def\]{\@ifnextchar.\PointAndEndFormula\seveendformula}
\def \PointAndEndFormula #1{.\seveendformula}
\catcode`\@=12 

添加

更复杂的解决方案适用于.,?!;:

\catcode`\@=11 
\def\addtopunct#1{\expandafter\let\csname punct@\meaning#1\endcsname\let}
\addtopunct{.}    \addtopunct{,}    \addtopunct{?}
\addtopunct{!}    \addtopunct{;}    \addtopunct{:}

\let\seveendformula\]
\def\PunctAndEndFormula #1{#1\seveendformula}
\def\]{\futurelet\punctlet\checkpunct@i}
\def\checkpunct@i{\expandafter\ifx\csname punct@\meaning\punctlet\endcsname\let  
       \expandafter\PunctAndEndFormula 
       \else \expandafter\seveendformula\fi}
\catcode`\@=12 
于 2010-02-10T09:40:30.137 回答
9

还有标点符号应该使用哪种字体的问题。除非您尝试使用其他数学字体,例如 Euler,否则您不会看到问题。那么逗号和句点在文本模式和数学模式中明显不同。我已经像以前一样\mbox{,}或懒惰地在显示的公式中编写了文本模式标点符号。\mbox,$$

于 2010-02-10T10:18:43.320 回答
5

您可以加载breqn 包(与 amsmath 兼容)并在其 dmath 环境中内置此行为:

Consider the function
\begin{dmath}\sin(x)\end{dmath}.

将输出与 相同的输出\[\sin(x).\],即,好像点在表达式内。

作为奖励,您还将在数学方程式中自动换行。

于 2011-01-16T20:15:51.237 回答
2

将标点符号放在显示环境中是常用的方法。问题是当 Latex 处理时\],它会结束数学框,所以后面的任何东西都将成为新垂直框的一部分。

您可以尝试以下方法:

\hbox{\[我的公式\]}。

这未经测试,可能存在间距问题,但如果您对这种解决方案感兴趣,我可以尝试让一些工作正常。

FWIW,您可能对https://mathoverflow.net/questions/6675/periods-and-commas-in-mathematical-writing感兴趣

于 2010-02-10T09:08:52.057 回答