我在 LaTeX 中有以下几行:
The primes from $1$ to $1000$ are $2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997.$
这不会环绕页面,而是会超出页面范围:
答案1
我认为你输入数字的方法有误。你向读者传达的是单个数字的集合;这使得逗号成为文本或句子结构的一部分,而不是你想要传达的信息的数学结构的一部分。
因此,要么在(内联)数学模式下单独渲染每个数字,如下例所示,或者——如果数学字体和文本字体属于同一字体系列,则建议——根本不使用(内联)数学。
\documentclass{article} % or some other suitable document class
\begin{document}
The primes from $1$ to $1000$ are $2$, $3$, $5$, $7$, $11$, $13$, $17$, $19$, $23$, $29$, $31$, $37$, $41$, $43$, $47$, $ 53$, $59$, $61$, $67$, $71$, $73$, $79$, $83$, $89$, $97$, $ 101$, $103$, $107$, $109$, $113$, $127$, $131$, $137$, $139$, $149$, $151$, $157$, $163$, $167$, $173$, $179$, $181$, $191$, $193$, $197$, $199$, $211$, $223$, $227$, $229$, $233$, $239$, $241$, $251$, $257$, $263$, $269$, $271$, $277$, $281$, $283$, $293$, $307$, $311$, $313$, $317$, $331$, $337$, $347$, $349$, $353$, $359$, $367$, $373$, $379$, $383$, $389$, $397$, $401$, $409$, $419$, $421$, $431$, $433$, $439$, $443$, $449$, $457$, $461$, $463$, $467$, $479$, $487$, $491$, $499$, $503$, $509$, $521$, $523$, $541$, $547$, $557$, $563$, $569$, $571$, $577$, $587$, $593$, $599$, $601$, $607$, $613$, $617$, $619$, $631$, $641$, $643$, $647$, $653$, $659$, $661$, $673$, $677$, $683$, $691$, $701$, $709$, $719$, $727$, $733$, $739$, $743$, $751$, $757$, $761$, $769$, $773$, $787$, $797$, $809$, $811$, $821$, $823$, $827$, $829$, $839$, $853$, $857$, $859$, $863$, $877$, $881$, $883$, $887$, $907$, $911$, $919$, $929$, $937$, $941$, $947$, $953$, $967$, $971$, $977$, $983$, $991$, and $997$.
\end{document}
附录:OP 排版问题的解决方案可以归结为决定逗号数字之间的是句子结构的一部分 - 因此应该以文本模式呈现(就 TeX 和 LaTeX 而言,这大大简化了排版工作),不管数字是以文本还是数学模式呈现的——或者是数学表达式的一部分——因此应该以数学模式呈现。是否有一些指导原则可以帮助决定哪种情况适用?是的。
上下文。以句子“前七个斐波那契数是 0、1、1、2、3、5 和 8”为例。很明显,逗号的作用是作为对象之间的普通分隔符;这些对象恰好是数字这一事实是次要的。结论:该句子应输入为
The first seven Fibonacci numbers are 0, 1, 1, 2, 3, 5, and 8.
另一个泄露秘密的线索是上句中出现了连接词“and”。在英语文本中(不确定其他语言是否也如此),如果语句的主要目的不是列出一些数字,而是显示涉及数字的特定数学序列,则插入连接词“and”(带或不带“牛津”逗号)是非常不寻常的。
数字的顺序重要吗?如果给定的数字顺序是“好的”或“方便的”(例如,按升序列出素数),但如果按特定顺序列出数字本质上并不重要,那么逗号几乎肯定主要作为该句子中各种元素的视觉分隔符 - 因此应该不是在数学模式下呈现。例如,在 OP 的例子中,按升序列出素数并不重要(尽管对读者来说可能非常有帮助……);如果按相反或降序列出,它们仍然是素数的完整列表,对吗?总之,没有必要将逗号视为数学表达式的一部分。
实际上,作者可能需要向读者解释清楚到底发生了什么。如果数字列表实际上是一个数学序列(其中顺序很重要),请毫不犹豫地用花括号或任何适用于您所在地区和语言的排版惯例将序列括起来。
答案2
旧式的实现:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\lon}[1]{% list of numbers
\ifmmode
\if@display
\ERROR
\else
\lon@{#1}%
\fi
\else
$\lon@{#1}$%
\fi
}
\newcommand{\lon@}[1]{%
\begingroup
\lon@activate\mathcode`,="8000 #1
\endgroup
}
\newcommand{\lon@activate}{%
\mathchardef\lon@comma=\mathcode`,
\begingroup\lccode`~=`,\lowercase{\endgroup
\def~}{{\lon@comma}\penalty0 \hspace{0.3em plus 0.2em minus 0.1em}}
}
\makeatother
\begin{document}
The primes from $1$ to $1000$ are \lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293,
307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397,
401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491,
499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601,
607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821,
823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929,
937, 941, 947, 953, 967, 971, 977, 983, 991, 997}.
We have an inline formula $X=\{\lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}\}$
We have an inline formula \(X=\{\lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}\}\)
\[
\lon{1,2,3}
\]
\end{document}
(数字列表)命令\lon
不能在显示中使用,因为它没有意义。
一种新式的实现。
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\lon}{m}
{% #1 = list of numbers
\mode_if_math:TF
{
\legacy_if:nTF {@display} { \ERROR } { $ \scan_stop: \robin_lon:n { #1 } \scan_stop: $ }
}
{
\robin_lon:n { #1 }
}
}
\cs_new_protected:Nn \robin_lon:n
{
$ \clist_use:nn { #1 } { {,}\penalty0 \hspace{0.3em plus 0.2em minus 0.1em} } $
}
\ExplSyntaxOff
\begin{document}
The primes from $1$ to $1000$ are \lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293,
307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397,
401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491,
499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601,
607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821,
823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929,
937, 941, 947, 953, 967, 971, 977, 983, 991, 997}.
We have an inline formula $X=\{\lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}\}$
We have an inline formula \(X=\{\lon{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}\}\)
\[
\lon{1,2,3}
\]
\end{document}
答案3
您已经从 Mico 获得了很好的 LaTeX 建议,因此我可以自由地在这里添加一种在 ConTeXt lmtx 中借助惩罚措施来实现这一点的方法。
为了能够轻松地打开和关闭它,我们在下面定义了Pmath
一个新的数学实例。我们使用前几行的设置,将mathpunctuation
原子类后的惩罚设置为 9999(默认情况下不允许这样的中断)。这确实可以启用中断后逗号(\setmathprepenalty
如果希望在类前启用空格,也可以使用逗号),但代价是很大的惩罚。在本例中,这已经足够了,因为没有其他地方可以中断。
要使用这个新的数学实例,我们需要做\m[Pmath]
的不是\m
。
\startsetups MyPunctuationMath
\setmathpostpenalty \mathpunctuationcode 9999
\stopsetups
\definemathematics
[Pmath]
[setups=MyPunctuationMath]
\starttext
\startbuffer
The primes from $1$ to $1000$ are \m{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997}.
\blank
The primes from $1$ to $1000$ are \m[Pmath]{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997}.
\stopbuffer
\getbuffer
\blank
\showmakeup[penalty]
\getbuffer
\stoptext
为了避免重复写所有内容,我们将内容放在缓冲区中,同时\showmakeup[penalty]
还显示惩罚。如您所见,它们现在位于9999
逗号后面。