Estoy tratando de determinar si existe una mejor práctica para componer la barra "evaluado en" para derivados. Las tres posibilidades en las que estoy pensando se muestran en el siguiente extracto de código:
\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*}
La \Bigr
opción no llega a la parte superior e inferior de la fracción. La \biggr
opción sobrepasa un poco la parte superior e inferior de la fracción. Y la \left...\right
opción tiene la misma altura que la \biggr
opción, pero introduce un poco de espacio extra entre +
y la fracción. Tengo problemas para decidir entre estas opciones. ¿Existe alguna práctica recomendada para componer esto?
Respuesta1
Dado que \big
de todos modos es el tamaño mínimo solicitado, es mejor utilizar un enfoque más simple:
\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}
Tenga en cuenta que el último tiene una barra definitivamente demasiado grande.
Respuesta2
Ampliando la sugerencia de daleif:
\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}
Y aquí está el resultado:
Idea tardía
Dado que el OP puso énfasis en cuestiones de estilo y mejor uso, debo corregir una imperfección evidente del código anterior: aunque el \evaluat
comando produce, en todas las variantes, una lista matemática que comienza con un átomo Abierto y termina con un átomo Cerrado, sin embargo, \evaluat*
se inserta
\nulldelimiterspace
a la izquierda del argumento obligatorio, mientras que las otras formas no lo hacen. Esto se corrige fácilmente:
\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}
La salida es:
Ampliemos también la porción correspondiente a la \nulldelimiterspace
prueba:
Por supuesto, la razón detrás de la elección del uso
\DeclarePairedDelimiter
fue que una definición simple sería suficiente, con laherramientas matemáticaspaquete cuidando todos los detalles; Si es necesario recurrir tanto a rutinas de devolución de llamada, estoy de acuerdo con egreg en que este enfoque pierde su sentido y que es mejor definir directamente un comando apropiado, como lo hace él (sin embargo, recomendaría la misma corrección en su código también, y también para organizar que la lista matemática generada siempre comience con un átomo abierto (aunque es poco probable, podría preceder una operación).
Respuesta3
He adoptado recientementeel physics
paquetecomo parte de mi kit de herramientas habitual, con la ventaja de que proporciona una herramienta explícitamente para esto \evaluated{}
(o \eval{}
).
Parece aplicar una barra de tamaño mínimo y ampliarla según sea necesario.
Aquí hay un ejemplo mínimo extraído de un documento que escribí recientemente para una clase.
\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}
que genera esta salida:
El uso de \eval
está en la segunda línea del align
medio ambiente.
Respuesta4
Mientras intentaba adaptarseLa respuesta de Bernardoa una pregunta similar (Barra vertical para "evaluado en"), noté que tiene un defecto porque supera la altura de la subfórmula “evaluada”, como se puede ver claramente en este ejemplo modificado,
\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}
que produce el siguiente resultado:
Sin embargo, me gustó la idea de usar una regla vertical en lugar de una\vert
delimitador, así que ideé otra solución basada en este mismo principio. La altura y la profundidad de la regla se calculan teniendo en cuenta las reglas detalladas en el Apéndice G delEl libro de textopara la colocación de subíndices (Reglas 18a y 18b). Por supuesto, estoy abierto a sugerencias sobre lo que concierne al valor de los distintos parámetros.
Aquí está mi propuesta actual:
% 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}
Este es el resultado que produce: