代码之家  ›  专栏  ›  技术社区  ›  Olivier Verdier

乳胶配方中的标点符号

  •  7
  • Olivier Verdier  · 技术社区  · 14 年前

    在编写数学时,给显示的公式添加标点符号似乎是常见的做法。

    有没有什么技巧可以避免在公式中使用标点符号?

    我想避免

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

    我更喜欢这样的东西:

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

    当然,句号显示在公式下方。

    有没有一个聪明的方法来分离乳胶配方和标点符号?

    4 回复  |  直到 14 年前
        1
  •  4
  •   Olivier Verdier    14 年前

    您可以加载 breqn package (与amsmash兼容)并将此行为与dmath环境结合在一起:

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

    将输出与 \[\sin(x).\] 也就是说,就像圆点在表达式中一样。

    作为一个额外的好处,你也会在你的数学方程式中自动换行。

        2
  •  10
  •   Alexey Malistov    14 年前
    \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 
    
        3
  •  8
  •   lhf    14 年前

    还有一个问题 字体 标点符号应该在。除非尝试其他数学字体(如Euler),否则不会看到问题。在文本模式和数学模式下,逗号和句点明显不同。我在显示的公式中编写了文本模式标点符号 \mbox{,} 或懒散地 \mbox, 就在之前 $$ .

        4
  •  2
  •   Community noseratio    7 年前

    将标点符号放在显示环境中是常见的方法。问题是当乳胶处理 \] ,它将结束MathBox,因此后面的任何内容都将是新垂直框的一部分。

    您可以尝试如下操作:

    \hbox{\[My formula\]}.
    

    这并没有经过测试,可能存在间距问题,但是如果您对这种解决方案感兴趣,我可以尝试让它工作。

    fwiw,你可能对 https://mathoverflow.net/questions/6675/periods-and-commas-in-mathematical-writing