Estou tentando determinar se existe uma prática recomendada para compor a barra "avaliada em" para derivativos. As três possibilidades nas quais estou pensando são mostradas no trecho de código abaixo:
\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*}
A \Bigr
opção não chega ao topo e ao fundo da fração. A \biggr
opção ultrapassa um pouco a parte superior e inferior da fração. E a \left...\right
opção tem a mesma altura da \biggr
opção, mas introduz um pouco de espaço extra entre o +
e a fração. Estou tendo problemas para decidir entre essas opções. Existe uma prática recomendada para compor isso?
Responder1
Como \big
esse é o tamanho mínimo solicitado, é melhor usar uma abordagem mais simples:
\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}
Observe que o último tem uma barra definitivamente muito grande.
Responder2
Elaborando a sugestão 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}
E aqui está a saída:
Reflexão tardia
Como o OP enfatiza questões de estilo e melhor uso, devo corrigir uma imperfeição evidente do código acima: embora o \evaluat
comando produza, em todas as variantes, uma lista matemática que começa com um átomo Open e termina com um átomo Close, no entanto, \evaluat*
é inserido
\nulldelimiterspace
à esquerda do argumento obrigatório, enquanto as outras formas não. Isso é facilmente corrigido:
\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}
A saída é:
Ampliemos também a parte referente ao \nulldelimiterspace
teste:
É claro que a razão por trás da escolha do uso
\DeclarePairedDelimiter
foi que uma definição simples seria suficiente, com aferramentas matemáticaspacote cuidando de todos os detalhes; se for necessário recorrer tanto a rotinas de retorno de chamada, concordo com egreg que esta abordagem perde o sentido e que é melhor definir diretamente um comando apropriado, como ele faz (no entanto, eu recomendaria a mesma correção em seu código também, e também para fazer com que a lista matemática gerada sempre comece com um átomo aberto - embora improvável, um Op poderia preceder).
Responder3
Eu adotei recentementeo physics
pacotecomo parte do meu kit de ferramentas habitual, com a vantagem de fornecer uma ferramenta explicitamente para isso \evaluated{}
(ou \eval{}
).
Parece aplicar uma barra de tamanho mínimo e aumentá-la conforme necessário.
Aqui está um exemplo mínimo extraído de um documento que escrevi recentemente para a aula
\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 gera esta saída:
O uso de \eval
está na segunda linha do align
meio ambiente.
Responder4
Ao tentar se adaptarA resposta de Bernardopara uma pergunta semelhante (Barra vertical para “avaliado em”), notei que ele é defeituoso na medida em que quebra a altura da subfórmula “avaliada”, como pode ser visto claramente neste exemplo 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 produz a seguinte saída:
Porém, gostei da ideia de usar uma regra vertical em vez de um \vert
delimitador, então desenvolvi outra solução baseada no mesmo princípio. A altura e a profundidade da regra são calculadas tendo em mente as regras detalhadas no Apêndice G doO TeXbookpara a colocação de subscritos (Regras 18a e 18b). Claro, estou aberto a sugestões no que diz respeito ao valor dos vários parâmetros.
Aqui está minha proposta atual:
% 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}
Esta é a saída que produz: