
Diese Frage wurde bereits mehrmals gestellt, aber ...
Ich suche nach einer konsistenten Implementierung des Bewertungssymbols:
- Bewertungsbalken als Trennzeichen:
<...>|
- Automatische Größenanpassung an den umschließenden Ausdruck:
\left<...>\right
Was ich binnichtgesucht wird:
- Auswertungsbalken als Relation:
<...>\mid
- Manuelle Größenanpassung an den umschließenden Ausdruck:
<...>bigg|
- Ein ganzes Makro!
Nun besteht das Problem darin, dass die \rvert
Größe nicht automatisch angepasst wird, sondern \left.
zusätzlicher Abstand eingefügt wird.
Perfekt wäre etwas in der Form, das \left_
Latex anweist, den Ausdruck hier einzuschließen und dabei von links überhaupt kein Trennzeichen einzufügen, egal ob sichtbar oder unsichtbar.
Habt ihr eine Idee wie man die Bewertungsleiste umsetzen könnte?
(Nicht nur das Problem umgehen!)
Betrachten Sie als Beispiel:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
y(a)&=\frac12 x^2|_a\\
y(a)&=\frac12 x^2\rvert_a\\
y(a)&=\left.\frac12 x^2\right|_a
\end{align}
\end{document}
Antwort1
Hier ist ein Makro, das automatisch skaliert, Ihnen aber auch erlaubt, eine Größe manuell anzugeben, falls gewünscht. Sie können auch ein Präfix für die Grenzwerte angeben, falls gewünscht, wie im letzten Beispiel für die erste Gruppe:
Anmerkungen:
- Das manuell angegebene Größenbeispiel dient lediglich als Beispiel für die Größenauswahlmöglichkeiten. Ich behaupte nicht, dass alle diese Größen für den angegebenen Bruchteil geeignet sind.
Code:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
% http://tex.stackexchange.com/questions/38868/big-parenthesis-in-an-equation
% http://tex.stackexchange.com/questions/6794/about-big-parenthesis-larger-than-bigg
\makeatletter
\newcommand{\vast}{\bBigg@{3}}
\newcommand{\Vast}{\bBigg@{3.5}}
\newcommand{\vastt}{\bBigg@{4}}
\newcommand{\Vastt}{\bBigg@{4.5}}
\makeatother
\newcommand{\BracKern}{\kern-\nulldelimiterspace}
\NewDocumentCommand{\Eval}{O{} o m m m}{%
% #1 = prefix to be added to each limit of evaluation (ex "x=").
% #2 = optional size specification to be applied (defaults to \left \right pair)
% \big \Big \bigg \Bigg \vast \Vast \vastt \Vastt
%
% #3 = expression being evaluated
% #4 = lower limit of evaluation
% #5 = upper limit of evaluation
\IfNoValueTF{#2}{%
\left.\BracKern#3\right\rvert_{#1#4}^{#1#5}%
}{%
#3#2\rvert_{#1#4}^{#1#5}%
}%
}
\usepackage{amsmath}
\begin{document}
\noindent
Automatically sized:
\begin{gather*}
\Eval{x^2}{0}{5} \quad
\Eval{\frac{1}{x}}{0}{5} \quad
\Eval[x=]{\frac{1}{x}}{0}{5}
\end{gather*}
Manually sized
\begin{gather*}
\Eval[][\big]{\frac{1}{x}}{0}{5} \quad
\Eval[][\Big]{\frac{1}{x}}{0}{5} \quad
\Eval[][\bigg]{\frac{1}{x}}{0}{5} \quad
\Eval[][\Bigg]{\frac{1}{x}}{0}{5} \quad
\Eval[][\vast]{\frac{1}{x}}{0}{5} \quad
\Eval[][\Vast]{\frac{1}{x}}{0}{5} \quad
\Eval[][\vastt]{\frac{1}{x}}{0}{5} \quad
\Eval[][\Vastt]{\frac{1}{x}}{0}{5}
\end{gather*}
\end{document}
Antwort2
Eine Anwendung der Makros inhttps://tex.stackexchange.com/a/136767/4427
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\DeclareDocumentCommand{\xDeclarePairedDelimiter}{mmmO{}}
{
\NewDocumentCommand{#1}{sO{}m}
{
\IfBooleanTF{##1}
{
\egreg_paired_delimiter_expand:nnnn {#2}{#3}{##3}{#4}
}
{
\egreg_paired_delimiter_fixed:nnnnn {##2}{#2}{#3}{##3}{#4}
}
}
}
\cs_new_protected:Npn \egreg_paired_delimiter_expand:nnnn #1 #2 #3 #4
{% Fix the spacing issue with \left and \right (D. Arsenau, P. Stephani and H. Oberdiek)
\mathopen{}
\mathclose\c_group_begin_token
\left#1
\str_if_eq:nnT { . } { #1 } { \kern-\nulldelimiterspace }
#3
\group_insert_after:N \c_group_end_token
\right#2
\tl_if_empty:nF {#4} { \c_math_subscript_token {#4} }
}
\cs_new_protected:Npn \egreg_paired_delimiter_fixed:nnnnn #1 #2 #3 #4 #5
{
\str_if_eq:nnF {.} { #2 } { \mathopen{#1#2} }
#4
\mathclose{#1#3}
\tl_if_empty:nF {#5} { \c_math_subscript_token {#5} }
}
\ExplSyntaxOff
%% the final optional argument to \xDeclarePairedDelimiter
%% is a subscript to the right fence
\xDeclarePairedDelimiter{\xeval}{.}{\rvert}[\evaluateat]
\newcommand{\evaluateat}{}
\NewDocumentCommand{\eval}{somm}{%
\begingroup
\renewcommand{\evaluateat}{#4}%
\IfBooleanTF{#1}
{\xeval*{#3}}
{\IfNoValueTF{#2}{\xeval{#3}}{\xeval[#2]{#3}}}%
\endgroup
}
\begin{document}
\begin{align}
y(a)&=\eval{\tfrac{1}{2}x^2}{a}\\
y(a)&=\eval[\Big]{\frac{1}{2}x^2}{a}\\
y(a)&=\eval[\bigg]{\frac{1}{2}x^2}{a}\\
y(a)&=\eval*{\dfrac{1}{2}x^2}{a}
\end{align}
\end{document}
Das optionale Argument to \eval
dient zum manuellen Auswählen einer Größe; \eval*
ist wie die Verwendung von \left
und \right
. Das zweite Argument ist der Auswertungspunkt.