Пунктуация в формулах LaTeX - PullRequest
7 голосов
/ 10 февраля 2010

При написании математики обычной практикой является добавление знаков пунктуации к отображаемым формулам.

Есть ли хитрость, чтобы не ставить знак препинания внутри формулы?

Я хочу избежать

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

Я бы предпочел что-то вроде:

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

Но, конечно, полный стоп отображается под формулой.

Есть ли умный способ разделить формулы и знаки препинания в LaTeX?

Ответы [ 4 ]

10 голосов
/ 10 февраля 2010
\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 
8 голосов
/ 10 февраля 2010

Существует также проблема, в которой шрифт должна быть пунктуация. Вы не увидите проблемы, пока не попробуете другой математический шрифт, такой как Эйлер. Тогда запятые и точки явно различаются в текстовом режиме и в математическом режиме. Я написал пунктуацию в текстовом режиме в отображаемых формулах как \mbox{,} или лениво как \mbox, непосредственно перед $$.

4 голосов
/ 16 января 2011

Вы можете загрузить пакет breqn (совместимый с amsmath) и встроить это поведение в среду dmath:

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

Выводит так же, как \[\sin(x).\], то есть, как если бы точка была внутри выражения.

В качестве бонуса вы также получите автоматический разрыв строки в своем математическом уравнении.

2 голосов
/ 10 февраля 2010

Размещение знаков препинания в среде отображения является обычным способом. Проблема в том, что когда Latex обрабатывает \], он завершает математический блок, поэтому все последующее будет частью нового вертикального блока.

Вы можете попробовать что-то вроде:

\hbox{\[My formula\]}.

Это не проверено и, вероятно, имеет проблемы с пробелами, но если вы заинтересованы в таком решении, я мог бы попытаться заставить что-то работать.

FWIW, вас может заинтересовать https://mathoverflow.net/questions/6675/periods-and-commas-in-mathematical-writing

...