2010-02-10 55 views
7

Có vẻ như thực tế phổ biến, khi viết toán học, để thêm dấu chấm câu vào các công thức được hiển thị.Dấu chấm câu trong các công thức LaTeX

Có mẹo nào để tránh đặt dấu chấm câu bên trong công thức không?

Tôi muốn tránh

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

Tôi muốn có một cái gì đó như:

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

Nhưng tất nhiên toàn bộ dừng được hiển thị bên dưới các công thức.

Có cách nào thông minh để tách các công thức và dấu câu trong LaTeX không?

Trả lời

4

Bạn có thể tải các breqn package (tương thích với amsmath) và có hành vi này inbuilt với môi trường dmath của nó:

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

Will đầu ra giống như \[\sin(x).\], ví dụ, như thể chấm ở bên trong biểu thức.

Là tiền thưởng, bạn cũng sẽ nhận được ngắt dòng tự động trong phương trình toán học của mình.

+0

Thú vị gói nhưng tôi không thể nhìn thấy mối quan hệ với câu hỏi ban đầu ... 'breqn' có vẻ là một gói để phá vỡ phương trình dài; OP là về dấu câu trong phương trình được hiển thị. –

+0

@Olivier: Tôi có bỏ lỡ điều gì đó trong lời giải thích của tôi không? OP yêu cầu '\ [\ sin (x) \].' để kéo khoảng thời gian bên trong toán hiển thị, và đó là * chính xác * ví dụ của tôi ở trên. –

+0

Ồ! Bạn đúng rồi. Điều này thật tuyệt vời! Nó chỉ là các tài liệu cho 'breqn' rất lộn xộn đến nỗi tôi không thể tìm thấy nó. Cảm ơn rất nhiều! –

2

Đặt dấu câu bên trong môi trường hiển thị là cách thông thường. Vấn đề là khi Latex xử lý các \], nó kết thúc mathbox, vì vậy bất cứ điều gì sau đây sẽ là một phần của một hộp dọc mới.

Bạn có thể thử một cái gì đó như: vấn đề khoảng cách

 
\hbox{\[My formula\]}. 

này không được kiểm tra, và có lẽ có, nhưng nếu bạn quan tâm đến loại hình giải pháp, tôi có thể thử và nhận được một cái gì đó làm việc.

FWIW, bạn có thể quan tâm https://mathoverflow.net/questions/6675/periods-and-commas-in-mathematical-writing

+0

Cảm ơn bạn đã liên kết! Đọc câu trả lời ở đó, tôi cảm thấy nhẹ nhõm khi thấy rằng tôi không phải là người duy nhất nghĩ rằng dấu chấm câu không nên là một phần của công thức. –

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

Thêm

Nhiều giải pháp phức tạp làm việc với .,?!;::

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

\let\seveendformula\] 
\def\PunctAndEndFormula #1{#1\seveendformula} 
\def\]{\futurelet\punctlet\[email protected]} 
\def\[email protected]{\expandafter\ifx\csname [email protected]\meaning\punctlet\endcsname\let 
     \expandafter\PunctAndEndFormula 
     \else \expandafter\seveendformula\fi} 
\catcode`\@=12 
+1

Có, thực sự. Tôi nghĩ về điều này, nhưng một vấn đề là có khá nhiều dấu câu có thể xảy ra mà bạn có thể muốn theo dõi một displaymath: có lẽ không phải là '!' hoặc ':', nhưng bên cạnh '.' mỗi ',', ';' và '?' khá phổ biến. 1 để trả lời câu hỏi mà không có chút vướng mắc. –

+0

Rất phong cách. Tôi không nghĩ mình có thể viết mã mới này: đây là thứ khá sâu. –

+0

Đây là * rực rỡ *! Nó rất hữu ích mà nó có lẽ nên được đặt lại với nhau như một gói LaTeX? –

7

Ngoài ra còn có các vấn đề trong đó phông chữ sự dấu chấm câu phải ở trong. Bạn sẽ không thấy dấu kiểm cho đến khi bạn thử một phông chữ toán học khác như Euler. Sau đó, dấu phẩy và dấu chấm rõ ràng là khác nhau ở chế độ văn bản và trong chế độ toán học. Tôi đã viết dấu câu chế độ văn bản trong các công thức được hiển thị là \mbox{,} hoặc lazily là \mbox, ngay trước $$.

Các vấn đề liên quan