
この質問は何度か投稿されていますが...
評価シンボルの一貫した実装を探しています:
- 区切りとしての評価バー:
<...>|
- 囲んでいる式に合わせて自動的にサイズを調整します。
\left<...>\right
私は何ですかない探しているのは:
- 関係としての評価バー:
<...>\mid
- 囲む式に合わせて手動でサイズを調整します。
<...>bigg|
- マクロ全体!
ここで問題となるのは、\rvert
サイズが自動的に調整されず、\left.
余分なスペースが挿入されることです。
\left_
完璧なのは、LaTex に、表示か非表示かに関係なく、左側から区切り文字をまったく挿入せずに、ここで式を囲むように指示する形式になります。
評価バーを実装する方法についてのアイデアはありますか?
(問題を回避するだけではありません!)
例として次のことを考えてみましょう:
\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}
答え1
これは自動スケーリングを行うマクロですが、必要に応じて手動でサイズを指定することもできます。また、最初のグループの最後の例のように、必要に応じて制限のプレフィックスを指定することもできます。
ノート:
- 手動で指定したサイズの例は、選択できるサイズの可能性を示しているだけです。私は、これらすべてのサイズが特定の分数に適していると言っているわけではありません。
コード:
\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}
答え2
マクロの応用https://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}
のオプション引数は、\eval
サイズを手動で選択するためのもので、および を使用するのと\eval*
同じです。2 番目の引数は評価のポイントです。\left
\right