평가 기호: 일관된 구현

평가 기호: 일관된 구현

이 질문은 여러 번 게시되었지만 ...

나는 평가 기호의 일관된 구현을 찾고 있습니다.

  • 구분 기호로 사용되는 평가 막대:<...>|
  • 주변 표현식에 맞게 자동 크기 조정:\left<...>\right

나는 무엇인가~ 아니다찾고 있는 것은:

  • 관계로서의 평가 막대:<...>\mid
  • 주변 표현식에 맞게 수동 크기 조정:<...>bigg|
  • 전체 매크로!

이제 문제는 \rvert자동 크기 조정이 아닌 \left.추가 간격을 삽입한다는 것입니다.

\left_완벽하게 는 라텍스에게 표시 여부에 관계없이 왼쪽에 구분 기호를 전혀 삽입하지 않고 여기에 표현식을 포함하도록 지시하는 형식이 될 것입니다 .

평가 표시줄을 구현하는 방법에 대한 아이디어가 있습니까?
(단순히 문제를 회피하는 것이 아닙니다!)

예를 들어 다음을 고려하십시오.

\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*사용하는 것과 같습니다 . 두 번째 주장은 평가의 요점이다.\left\right

여기에 이미지 설명을 입력하세요

관련 정보