Ich versuche herauszufinden, ob es eine bewährte Methode zum Setzen der Leiste „evaluated at“ für Ableitungen gibt. Die drei Möglichkeiten, die mir in den Sinn kommen, sind im folgenden Codeausschnitt dargestellt:
\begin{gather*}
5 + \frac{df}{dt} \Bigr\rvert_{t = 0} \\
5 + \frac{df}{dt} \biggr\rvert_{t = 0} \\
5 + \left. \frac{df}{dt} \right\rvert_{t = 0} \\
\end{gather*}
Die \Bigr
Option erreicht nicht ganz die Ober- und Unterseite des Bruchs. Die \biggr
Option geht etwas über die Ober- und Unterseite des Bruchs hinaus. Und die \left...\right
Option hat die gleiche Höhe wie die \biggr
Option, fügt aber etwas zusätzlichen Abstand zwischen +
und dem Bruch ein. Ich habe Schwierigkeiten, mich zwischen diesen Optionen zu entscheiden. Gibt es eine bewährte Methode, dies zu setzen?
Antwort1
Da \big
dies ohnehin die erforderliche Mindestgröße ist, ist ein einfacherer Ansatz besser:
\documentclass{article}
\usepackage{amsmath,mleftright}
\usepackage{xparse}
\NewDocumentCommand{\evalat}{sO{\big}mm}{%
\IfBooleanTF{#1}
{\mleft. #3 \mright|_{#4}}
{#3#2|_{#4}}%
}
\begin{document}
\begin{align}
& \evalat{f(x)}{x=0} \\
& \evalat[\big]{f(x)}{x=0} \\
& \evalat[\Big]{\frac{\partial f}{\partial x}}{x=0} \\
& \evalat[\bigg]{\frac{\partial f}{\partial x}}{x=0} \\
& \evalat*{\frac{\partial f}{\partial x}}{x=0} \\
& \evalat[\bigg]{\frac{\partial^2 f}{\partial x^2}}{x=0} \\
& \evalat*{\frac{\partial^2 f}{\partial x^2}}{x=0} \\
& \evalat[\bigg]{\left(1+\frac{1}{x}\right)^{\!x^2}}{x=1} \\
& \evalat*{\left(1+\frac{1}{x}\right)^{\!x^2}}{x=1}
\end{align}
\end{document}
Beachten Sie, dass der Balken beim letzten eindeutig zu groß ist.
Antwort2
Weitere Erläuterungen zu Daleifs Vorschlag:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\DeclarePairedDelimiter\evaluat{.}{\rvert}
\reDeclarePairedDelimiterInnerWrapper\evaluat{nostar}{\mathopen{}#2\mathclose{#3}}
\begin{document}
Some examples:
\begin{itemize}
\item with \verb|\evaluat[\big]|
\[\evaluat[\big]{\frac{\partial f}{\partial x}}_{x=0}\]
\item with \verb|\evaluat[\Bigg]|
\[\evaluat[\Bigg]{\frac{\partial f}{\partial x}}_{x=0}\]
\item with \verb|\evaluat*|
\[\evaluat*{\frac{\partial f}{\partial x}}_{x=0}\]
(in this case, a \verb|\left|\ \ldots\verb|\right| construction is
used);
\item and with \verb|\evaluat| (thanks again, egreg~;-)
\[\evaluat{\frac{\partial f}{\partial x}}_{x=0}\]
\end{itemize}
\end{document}
Und hier ist die Ausgabe:
Nachträglicher Einfall
Da der OP den Schwerpunkt auf Fragen des Stils und der besten Verwendung gelegt hat, muss ich einen offensichtlichen Mangel des obigen Codes korrigieren: Obwohl der \evaluat
Befehl in allen Varianten eine mathematische Liste erzeugt, die mit einem Open-Atom beginnt und mit einem Close-Atom endet, \evaluat*
fügt er dennoch \nulldelimiterspace
links vom obligatorischen Argument ein, während die anderen Formen dies nicht tun. Dies lässt sich leicht korrigieren:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\DeclarePairedDelimiter\evaluat{.}{\rvert}
\reDeclarePairedDelimiterInnerWrapper\evaluat{nostar}{%
\mathopen{}#2\mathclose{#3}%
}
\reDeclarePairedDelimiterInnerWrapper\evaluat{star}{%
\mathopen{}\mathclose\bgroup #1\hskip -\nulldelimiterspace \relax
#2\aftergroup\egroup #3%
}
\begin{document}
Some examples:
\begin{itemize}
\item with \verb|\evaluat[\big]|
\[\evaluat[\big]{\frac{\partial f}{\partial x}}_{x=0}\]
\item with \verb|\evaluat[\Bigg]|
\[\evaluat[\Bigg]{\frac{\partial f}{\partial x}}_{x=0}\]
\item with \verb|\evaluat*|
\[\evaluat*{\frac{\partial f}{\partial x}}_{x=0}\]
(in this case, a \verb|\left|\ \ldots\verb|\right| construction is
used);
\item and with \verb|\evaluat| (thanks again, egreg~;-)
\[\evaluat{\frac{\partial f}{\partial x}}_{x=0}\]
\end{itemize}
Difference between non-\verb|\big| and \verb|\big|:
$\evaluat{x}$, $\evaluat[\big]{x}$.
Test for \verb|\nulldelimiterspace|:
\begin{align*}
& 1+\evaluat{f(x)}_{x=0} \\
& 1+\evaluat*{f(x)}_{x=0}
\end{align*}
\end{document}
Die Ausgabe ist:
Vergrößern wir auch den Teil, der sich auf den \nulldelimiterspace
Test bezieht:
Natürlich
\DeclarePairedDelimiter
lag der Grund für die Wahl von „Verwendung von“ darin, dass eine einfache Definition ausreichen würde, mit derMathetoolsPaket, das sich um alle Details kümmert; wenn man so häufig auf Callback-Routinen zurückgreifen muss, stimme ich mit egreg überein, dass dieser Ansatz seinen Sinn verliert und dass es besser ist, direkt einen entsprechenden Befehl zu definieren, wie er es tut (ich würde jedoch die gleiche Korrektur auch in seinem Code empfehlen und auch dafür sorgen, dass die generierte mathematische Liste immer mit einem offenen Atom beginnt – obwohl dies unwahrscheinlich ist, könnte ein Op vorangehen).
Antwort3
Ich habe vor kurzem adoptiertDas physics
Paketals Teil meines üblichen Werkzeugkastens, mit dem Vorteil, dass es explizit hierfür \evaluated{}
(oder \eval{}
) ein Werkzeug bereitstellt.
Es scheint eine Mindestgrößenleiste anzuwenden und diese nach Bedarf zu vergrößern.
Hier ist ein minimales Beispiel aus einem Dokument, das ich kürzlich für den Unterricht geschrieben habe
\documentclass{minimal}
\usepackage{physics}
\begin{document}
here we recognize the terminal velocity in the denominator of the
RHS
\begin{align*}
\Delta x
&= \mp\frac{m}{k} \int_{v_1}^{v_2}
\frac{v\dd{v}}{v^2 \pm v_t^2} \\
\\
&= \mp\frac{m}{k} \frac{1}{2} \eval{\ln\qty({v^2 \pm
v_t^2})}_{v_1}^{v_2} \\
\\
&= \mp\frac{m}{2k}
\qty[\ln\qty(v_2^2 \pm v_t^2) - \ln\qty(v_1^2 \pm v_t^2)] \,.
\end{align*}
\end{document}
das folgende Ausgabe erzeugt:
Die Verwendung \eval
erfolgt in der zweiten Zeile der align
Umgebung.
Antwort4
Beim Versuch, sich anzupassenBernards Antwortauf eine ähnliche Frage (Senkrechter Strich für „ausgewertet bei“), ist mir aufgefallen, dass es einen Mangel aufweist, da es die Höhe der „ausgewerteten“ Teilformel zerstört, wie man in diesem modifizierten Beispiel deutlich sehen kann.
\documentclass{article}
\usepackage{amsmath}
\newcommand\eval[1]{\begin{array}[t]{@{}c@{\,}|@{\,}}%
\raisebox{0pt}[0.33\height][1.33\depth]{$ \displaystyle#1 $}\end{array}}
\begin{document}
\begin{align*}
& 5 + \eval{\dfrac{df}{dt}}_{t = 0} \\[2ex]
& 5 + \eval{\frac{d\Bigl(\dfrac{f}{g}\Bigr)}{dt}}_{t = 0}
\end{align*}
\end{document}
Das Ergebnis ist folgende:
Mir gefiel jedoch die Idee, anstelle eines \vert
Trennzeichens eine vertikale Linie zu verwenden, und so erarbeitete ich eine andere Lösung, die auf demselben Prinzip basiert. Die Höhe und Tiefe der Linie werden unter Berücksichtigung der in Anhang G vonDas TeXbookfür die Platzierung von Indizes (Regeln 18a und 18b). Natürlich bin ich offen für Vorschläge, was den Wert der verschiedenen Parameter betrifft.
Hier ist mein aktueller Vorschlag:
% 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} % I always load it when dealing with math!
\makeatletter
\newcommand*\evaluateat[2]{%
#1% first, typeset the base symbol(s)
\mkern .5\thinmuskip % too little? too much?
\mathpalette{\EA@evaluate@at{#2}}{#1}% then, add the vertical bar
}
\newcommand*\EA@evaluate@at[3]{%
% #1 <- subscripted annotation
% #2 <- style selector, e.g., "\textstyle"
% #3 <- base symbol(s)
\setbox\z@ \hbox{$\m@th\color@begingroup #2#3\color@endgroup$}%
\dimen@ \dimexpr \ht\z@ *\tw@/\thr@@ \relax
\dimen@ii \dp\z@
\ifx #2\scriptscriptstyle
\EA@calc@style@dependent@values \scriptscriptfont \scriptscriptfont
\else \ifx #2\scriptstyle
\EA@calc@style@dependent@values \scriptfont \scriptscriptfont
\else
\EA@calc@style@dependent@values \textfont \scriptfont
\fi \fi
\vrule \@height\dimen@ \@depth\dimen@ii \@width\dimen4
\mathord{% or "\mathclose{}\mathopen{}\mathinner{"?
\vrule \@depth\dp\z@ \@height\z@ \@width\z@
}% } brace match
_{\,#1}%
}
\newcommand*\EA@calc@style@dependent@values[2]{%
% #1 <- main font selector, e.g., "\textfont"
% #2 <- relative script font selector, e.g., "\scriptfont"
\advance \dimen@ii \fontdimen19#2\tw@
\dimen4 \fontdimen16#1\tw@
\ifdim \dimen@ii<\dimen4
\dimen@ii \dimen4
\fi
\advance \dimen@ii \dimen4 % extra depth
% \dimen4 \dimexpr \fontdimen5#1\tw@ *6/5\relax
\dimen4 \fontdimen5#1\tw@ % the ex-height
\ifdim \dimen4 <\z@
\dimen4 -\dimen4
\fi
\ifdim \dimen@<\dimen4
\dimen@ \dimen4
\fi
% Now re-use "\dimen4" to hold the default rule thickness:
\dimen4 \fontdimen8#1\thr@@
}
\makeatother
\begin{document}
In-line: \( \evaluateat{\mathord.}{x=0} + \evaluateat{f}{x=0} +
\evaluateat{f(x)}{x=0} + \evaluateat{\frac{df}{dx}}{x=0} \). And displayed:
\[
\evaluateat{f}{x=0}+\evaluateat{\frac{df}{dx}}{x=0}
- \evaluateat{\,\frac{\frac{df}{dx}\,}{\,\frac{df}{dy}\,}}{x=0,y=0}
\]
Example in \verb|\scriptstyle|:
\( \frac{\evaluateat{f(x)}{x=0}}{g\left(\evaluateat{f(x)}{x=0}\right)} \).
Another example:
\[ \evaluateat{df}{x} \colon T_{x}M\longrightarrow T_{y}N \]
\end{document}
Dies ist die Ausgabe, die es liefert: