双列设计很好,但是我遇到了三个问题:
每次我使用一个已经有连字符 (
-
) 的单词时,LaTeX 都会停止用新的连字符断开该单词,以使其适合该列(因此该单词会进入下一列)。每次我
$$
在句子中使用时,它都会因为超出列而弄乱方程式 (
\begin{equation}
) 也不会自动中断
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage[left=2.00cm, right=2.00cm, top=2.00cm, bottom=2.00cm]{geometry}
\usepackage[german]{babel}
\usepackage{cryptocode}
\usepackage{lipsum}
\begin{document}
\twocolumn
\pagebreak
\section{Diffie-Hellman-Schlüsselaustausch}
\lipsum[1-5]
\begin{equation}
{\displaystyle \mathrm {i} \hbar {\frac {\partial }{\partial t}}\psi (\mathbf {r} ,t)=\left(-{\frac {\hbar ^{2}}{2m}}\Delta +V(\mathbf {r} ,t)\right)\psi (\mathbf {r} ,t)},
\end{equation}
\lipsum[1]
\begin{equation}
F = \{F_{x} \in F_{c} : (|S| > |C|) \cap
(minPixels < |S| < maxPixels) \cap
(|S_{connected}| > |S| - \epsilon)
\}
\end{equation}
\end{document}
答案1
首先,关于文档设置的一些要点:
无需
amsfonts
明确加载,因为它会自动加载amssymb
。代替
\usepackage[left=2.00cm, right=2.00cm, top=2.00cm, bottom=2.00cm]{geometry}
只写
\usepackage[margin=2cm]{geometry}
除非您喜欢代码混乱。
除非你必须遵守使用 1995 年之前的德语拼写和连字规则的明确要求,否则请替换
\usepackage[german]{babel}
和
\usepackage[ngerman]{babel} % note the 'n' in 'ngerman'
接下来,你可能不知道 LaTeX 和 TeX 确实不是如果单词是带连字符的复合词的一部分,则换行。因此,如果“Schlüsselaustausch”出现在 [在我看来很糟糕!]“Diffie-Hellman-Schlüsselaustausch”字符串中,则不会使用连字符和换行。我建议您添加说明
\usepackage{sectsty}
\allsectionsfont{\raggedright}
到序言部分。这将强制 LaTeX 在“Schlüsselaustausch”之前立即插入换行符。添加这两个指令可能是一个好主意,因为 (a) 您的文档以双列模式排版,并且 (b) 分段标题中的单词连字符通常被认为与“精细排版”相悖。我个人并不赞同永远不应该在分段标题中使用连字符的观点,但我知道有不少人确实持有这种观点。如果有疑问,最好不要与他们争论……
我不确定我是否知道如何解释你的这句话:“每次我$$
在句子中使用 时,它都会因为超出列的范围而弄乱”。当然,$$
在 PlainTeX 中用于启动和终止显示数学模式(在 LaTeX 中则不是那么多)。如果你指的是内联数学模式,即,如果你打算写$...$
,那么简单的规则是 TeX 可以在一些,内联公式中的位置相当严格,但不是任意位置。
由于您没有提供需要换行的内联数学公式的示例,因此无法提供更具体的建议。不过,一般建议是:让所有内联数学表达式都简短明了。您的读者会感激您的这一举动,而且您遇到的烦人的换行问题也会少得多。
关于环境中的换行equation
:我不确定您认为 LaTeX 在这样的环境中对材料执行(或应该执行?)换行的观点的依据是什么。事实上,情况恰恰相反。因此,如果您想在显示的长方程式中使用换行符,您必须自己提供换行符,和您必须使用除 之外的显示数学环境equation
。(嗯,是一个名为的包breqn
可以执行自动换行。但是,其结果通常需要进一步的手动调整。)
对于手头的公式,我建议您使用multline
环境(由包提供amsmath
)并提供两个断点(用 表示\\
)。对于手头的公式,在指令之前立即插入断点看起来是一种明智的做法。为了帮助读者快速“解析”公式,您还可以手动调整花括号和圆括号的大小;请参阅下面的屏幕截图,其中有一个使用/和/ 的\cap
情况。\Bigl
\Bigr
\bigl
\bigr
关于数学排版的另外两点意见。首先,你似乎喜欢用花括号括住子公式。额外的花括号可以实现没有什么但会导致代码混乱。请尝试戒掉这个习惯。其次,如果整个自然语言单词出现在公式中,请将它们括在或\mathrm
语句中mathit
;否则,LaTeX 会将这些单词视为公式本身来处理——通常会产生不良结果。对于第二个等式,这涉及单词“minPixels”、“maxPixels”和“connected”。
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc} % not needed unless your TeX distribution is quite old
\usepackage[T1]{fontenc}
\usepackage{amsmath}
%%\usepackage{amsfonts} %% not needed
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage[margin=2cm]{geometry}
\usepackage[ngerman]{babel} % ngerman, not german, right?
\usepackage{cryptocode}
\usepackage{lipsum}
\usepackage{sectsty}
\allsectionsfont{\raggedright}
\begin{document}
\twocolumn
%%\pagebreak % unnecessary
\section{Diffie-Hellman-Schlüsselaustausch}
\dots
\begin{equation}
\mathrm{i} \hbar \frac{\partial }{\partial t} \psi(\mathbf{r},t) =
\biggl( -\frac{\hbar ^{2}}{2m} \Delta
+V(\mathbf{r},t) \biggr) \psi(\mathbf{r},t) \,,
\end{equation}
\dots
\begin{multline}
F = \Bigl\{ F_{x} \in F_{c} : \bigl( |S| > |C| \bigr) \\
\cap \bigl( \mathrm{minPixels} < |S| < \mathrm{maxPixels} \bigr) \\
\cap \bigl( |S_{\mathrm{connected}}| > |S| - \epsilon \bigr) \Bigr\}
\end{multline}
\end{document}