Ich habe den folgenden Code ausgeführt und beim Verwenden der \pmod
Funktion den folgenden riesigen Speicherplatz erhalten. Auf dem Papier sieht es seltsam aus. Kann jemand vorschlagen, wie der Speicherplatz reduziert werden kann?
\begin{eqnarray*}
MSC(C_n^2) &=& \begin{cases}
1, & \text{if $n$ is odd and d is even ($n\equiv 1\pmod{4}$)},\\
2, & \mbox{if n is even and d is even ($n\equiv 0\pmod {4}$)},\\
3, & \mbox{if n is odd and d is odd ($n\equiv 3\pmod {4}$)},\\
3, & \mbox{if n is even and d is odd ($n\equiv 2\pmod {4}$)}.
\end{cases}
\end{eqnarray*}
Antwort1
GefolgtSchreiben von Mod bei Kongruenzproblemen ohne führendes Leerzeichen, Verwendung \Mod
wie unten definiert:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\Mod}[1]{\ (\mathrm{mod}\ #1)}
\begin{document}
\begin{align*}
MSC(C_n^2) &=
\begin{cases}
1, & \text{if $n$ is odd and $d$ is even ($n \equiv 1 \Mod{4}$)}, \\
2, & \text{if $n$ is even and $d$ is even ($n \equiv 0 \Mod{4}$)}, \\
3, & \text{if $n$ is odd and $d$ is odd ($n \equiv 3 \Mod{4}$)}, \\
3, & \text{if $n$ is even and $d$ is odd ($n \equiv 2 \Mod{4}$)}.
\end{cases}
\end{align*}
\end{document}
Antwort2
Der Kursivschrift nach zu urteilen, handelt es sich bei der Anzeige um eine Theorem-Aussage.
Ich würde die Klammern und die Wiederholung gemeinsamer Teile vermeiden:
\documentclass{article}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}
\DeclareMathOperator{\MSC}{MSC}
\begin{document}
\begin{theorem}
Blah, blah
\begin{equation*}
\MSC(C_n^2)=
\begin{cases}
1, & \text{if $n$ is odd and $d$ is even, i.e., $n\equiv 1$},\\
2, & \text{if $n$ is even and $d$ is even, i.e., $n\equiv 0$},\\
3, & \text{if $n$ is odd and $d$ is odd, i.e., $n\equiv 3$},\\
3, & \text{if $n$ is even and $d$ is odd, i.e., $n\equiv 2$},
\end{cases}
\end{equation*}
where congruences are modulo~$4$.
\end{theorem}
\end{document}
Einige Notizen:
- „MSC“ sollte aufrecht stehen und wie ein Betreiber behandelt werden;
- auch im Kontext von Kursivschrift sollten mathematische Variablen im Mathematikmodus eingegeben werden;
eqnarray
darf nicht verwendet werden, wennamsmath
verfügbar ist (und es sollte immer dann geladen werden, wenn ein Dokument ernsthafte Mathematik enthält;- Verwenden Sie in diesem Fall die richtige Umgebung,
equation*
weil Sie keine Ausrichtung haben.
Antwort3
Der LaTeX-Kernel übernimmt seine Definition von\pmod
\def\pmod#1{%
\allowbreak\mkern18mu({\operator@font mod}\,\,#1)}
(siehe ltmath.dtx
, Codezeilen 39–40) aus einfachem TeX, in dem es heißt
\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)}
(sehenDas TeXbook, S. 361); in beiden Fällen ist der Abstand vor dem Wort „mod“ 1em breit. Die Anwendungsbeispiele auf S. 164 vonDas TeXbooksowie die Antwort auf Übung 18.4 zeigen, dass Knuth beabsichtigte, dass dieser Abstand auch in Inline-Formeln verwendet werden sollte. Dennoch amsmath
modifiziert das Paket die obige Definition so, dass ein kleinerer Abstand verwendet wird, wenn die Formel „nicht angezeigt“ wird:
\newcommand{\pod}[1]{\allowbreak
\if@display\mkern18mu\else\mkern8mu\fi(#1)}
\renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}}
(siehe auchdiese AntwortZuSchreiben von Mod bei Kongruenzproblemen ohne führendes Leerzeichen, eine Frage, die bereits verlinkt wurde vondie akzeptierte Antwortauf diese Frage). Wie man sieht, wird der Zustand „nicht im Display“ über den \if@display
Schalter erkannt.
Als ich über diese Frage nachdachte, begann ich mich zu fragen, ob dies ein Fehler – oder eher ein Designfehler – im Paket sein könnte. Vielleicht wäre es eine bessere Idee, die Größe des Platzes mit dem aktuellen Mathematikstil zu ändern, ähnlich wie „große Operator“-Symbole \sum
ihre \int
Größe (und in gewissem Maße auch ihre Form) zwischen angezeigter und nicht angezeigter Mathematik ändern. Dieses Verhalten lässt sich leicht mit dem Patch für den \pod
Befehl (definiert durch das amsmath
Paket) erreichen, den der folgende Code zeigt:
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
% \usepackage{amsmath} % Required for what follows; but...
\usepackage{mathtools} % ... "mathtools" automatically loads "amsmath".
\makeatletter
\renewcommand*\pod[1]{%
\allowbreak
\mathchoice
{\mkern 18mu}%
{\mkern 8mu}%
{\mkern 8mu}%
{\mkern 8mu}%
(#1)%
}
\makeatother
\newtheorem{thm}{Theorem}
\begin{document}
In-line: \( 5\equiv 1 \pmod 4 \). In display:
\[ 5\equiv 1 \pmod 4 \]
Non-display inside display:
\[
f(x) =
\begin{cases}
4 & \mbox{if $x\equiv 0 \pmod 4$,} \\
x\bmod 4 & \mbox{otherwise.}
\end{cases}
\]
The same thing, but with \texttt{cases*} (requires \textsf{mathtools}):
\[
f(x) =
\begin{cases*}
4 & if $x\equiv 0 \pmod 4$, \\
x\bmod 4 & otherwise.
\end{cases*}
\]
\begin{thm}
All over again.
In-line: \( 5\equiv 1 \pmod 4 \). In display:
\[ 5\equiv 1 \pmod 4 \]
Non-display inside display:
\[
f(x) =
\begin{cases}
4 & \mbox{if $x\equiv 0 \pmod 4$,} \\
x\bmod 4 & \mbox{otherwise.}
\end{cases}
\]
With \texttt{cases*}:
\[
f(x) =
\begin{cases*}
4 & if $x\equiv 0 \pmod 4$, \\
x\bmod 4 & otherwise.
\end{cases*}
\]
\end{thm}
Nonetheless, inside an alignment, say
\begin{align*}
2 &\equiv 9 \pmod 7 \\
4 &\equiv 1 \pmod 3 \mbox{,}
\end{align*}
the output agrees with that of a displayed equation:
\[
5\equiv 1 \pmod 4 \mbox{.}
\]
\end{document}
Dies ist die Ausgabe, die der obige Code erzeugt:
Diese Änderung könnte eine elegante und konsistente Möglichkeit sein, das zu erreichen, was in der Frage verlangt wird. Wenn der \mod
Befehl ebenfalls verwendet wird, sollte er ebenfalls entsprechend geändert werden. Natürlich kann man diese Änderungen nicht in den Code des masmath
Pakets einführen, ohne alle vorhandenen Dokumente zu stören, die diese Funktionen verwenden …
Zusatz:
Als ich weiter über dieses Problem nachdachte, dachte ich, dass es sogar sinnvoll sein könnte, den \pmod
Befehl in Hoch-/Tiefstellungen zu verwenden (siehe Beispiel unten). In diesem Fall scheint es, dass der Abstand vor der linken Klammer noch schmaler gemacht werden sollte.
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
% \usepackage{amsmath} % Required for what follows; but...
\usepackage{mathtools} % ... "mathtools" automatically loads "amsmath".
\makeatletter
\renewcommand*\pod[1]{%
\allowbreak
\mathchoice
{\mkern 18mu}%
{\mkern 8mu}%
{\mkern 6mu}% "6mu" matches the space *after* the word "mod"
{\mkern 6mu}%
(#1)%
}
\makeatother
\newtheorem{thm}{Theorem}
\begin{document}
In-line: \( 5\equiv 1 \pmod{4} \). In display:
\[ 5\equiv 1 \pmod{4} \]
Non-display inside display:
\[
f(x) =
\begin{cases}
4 & \mbox{if $x\equiv 0 \pmod{4}$,} \\
x\bmod 4 & \mbox{otherwise.}
\end{cases}
\]
The same thing, but with \texttt{cases*} (requires \textsf{mathtools}):
\[
f(x) =
\begin{cases*}
4 & if $x\equiv 0 \pmod{4}$, \\
x\bmod 4 & otherwise.
\end{cases*}
\]
\begin{thm}
All over again.
In-line: \( 5\equiv 1 \pmod{4} \). In display:
\[ 5\equiv 1 \pmod{4} \]
Non-display inside display:
\[
f(x) =
\begin{cases}
4 & \mbox{if $x\equiv 0 \pmod{4}$,} \\
x\bmod 4 & \mbox{otherwise.}
\end{cases}
\]
With \texttt{cases*}:
\[
f(x) =
\begin{cases*}
4 & if $x\equiv 0 \pmod{4}$, \\
x\bmod 4 & otherwise.
\end{cases*}
\]
\end{thm}
Nonetheless, inside an alignment, say
\begin{align*}
2 &\equiv 9 \pmod{7} \\
4 &\equiv 1 \pmod{3} \mbox{,}
\end{align*}
the output agrees with that of a displayed equation:
\[
5\equiv 1 \pmod{4} \mbox{.}
\]
In super\slash subscripts:
\[
\int_{0}^{3\pi} \sin x\,dx
= -\cos x \biggr|_{0}^{3\pi}
= -\cos x \biggr|_{x\equiv 0 \pmod{2\pi}}^{x\equiv 3\pi \pmod{2\pi}}
= -\cos x \biggr|_{0}^{\pi}
= 1-(-1) = 2
\]
\end{document}
Die Ausgabe in diesem zweiten Fall ist
Antwort4
Ich finde nicht, dass die Verwendung \pmod
von innerhalb von Klammern so schön aussieht, insbesondere wenn die äußeren (Text-)Klammern kursiv sind, daher schlage ich vor, \bmod
stattdessen zu verwenden. Ich schlage zwei Möglichkeiten vor: mit der cases*
Umgebung aus mathtools (simpler syntax), and with a standard
Fällen ,and
eqparbox`, um die Modulbedingungen auszurichten:
\documentclass{article}
\usepackage{mathtools}
\usepackage{eqparbox}
\begin{document}
\begin{align*}
MSC(C_n^2) &=
\begin{cases}
1, & \eqparbox{CN}{if $n$ is odd and $d$ is even} (n \equiv 1 \bmod{4}), \\
2, & \eqparbox{CN}{if $n$ is even and $d$ is even\enspace} (n \equiv 0 \bmod{4}), \\
3, & \eqparbox{CN}{ if $n$ is odd and $d$ is odd} (n \equiv 3 \bmod{4}), \\
3, & \eqparbox{CN}{ if $n$ is even and $d$ is odd } (n \equiv 2 \bmod{4}).
\end{cases}
\end{align*}
\begin{align*}
MSC(C_n^2) &=
\begin{cases*}
1, & if $n$ is odd and $d$ is even ($n \equiv 1 \bmod{4}$), \\
2, & if $n$ is even and $d$ is even ($n \equiv 0 \bmod{4}$), \\
3, & if $n$ is odd and $d$ is odd ($n \equiv 3 \bmod{4}$), \\
3, & if $n$ is even and $d$ is odd ($n \equiv 2 \bmod{4}$).
\end{cases*}
\end{align*}
\end{document}