
私はこれを使用しようとしました:
\documentclass{article}
\usepackage{mathtools}
\makeatletter
\newcommand{\superimpose}[2]{%
{\ooalign{$#1\@firstoftwo#2$\cr\hfil$#1\@secondoftwo#2$\hfil\cr}}}
\makeatother
\newcommand{\MyTry}{\mathpalette\superimpose{{\sum}{\vert}}}
\begin{document}
$\MyTry$
\end{document}
しかし、それは正しい方法ではありませんし、区切り文字をどのように使用すればいいのかもわかりません。ありがとうございます。
答え1
\ooalign
こちらはとモードの混合ですpicture
。
\documentclass{article}
\usepackage{amsmath,pict2e}
\makeatletter
\newcommand{\barredsum}{%
\DOTSB\mathop{\mathpalette\@barredsum\relax}\slimits@
}
\newcommand{\@barredsum}[2]{%
\begingroup
\sbox\z@{$#1\sum$}%
\setlength{\unitlength}{\dimexpr2pt+\ht\z@+\dp\z@\relax}%
\@barredsumthickness{#1}%
\vphantom{\@barredsumbar}%
\ooalign{$\m@th#1\sum$\cr\hidewidth$#1\@barredsumbar$\hidewidth\cr}%
\endgroup
}
\newcommand{\@barredsumbar}{%
\vcenter{\hbox{\begin{picture}(0,1)\roundcap\Line(0,0)(0,1)\end{picture}}}%
}
\newcommand{\@barredsumthickness}[1]{% see https://tex.stackexchange.com/a/477200/
\linethickness{%
1.25\fontdimen8
\ifx#1\displaystyle\textfont\else
\ifx#1\textstyle\textfont\else
\ifx#1\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi 3
}%
}
\makeatother
\begin{document}
\[
\barredsum_{i=1}^N x_i
\]
\begin{center}
$\barredsum_{i=1}^N x_{\barredsum_{i=1}^N x_{\barredsum_{i=1}^N x_i}}$
\end{center}
\end{document}
オーバーシュートが可変で、シンボルの垂直範囲が次の値と同じ場合の改善の可能性\sum
:
\documentclass{article}
\usepackage{amsmath,pict2e,picture}
\makeatletter
\newcommand{\barredsum}{%
\DOTSB\mathop{\mathpalette\@barredsum\relax}\slimits@
}
\newcommand{\@barredsum}[2]{%
\begingroup
\sbox\z@{$#1\sum$}%
\setlength{\unitlength}{%
\dimexpr
\ifx#1\displaystyle1\else3\fi\dimexpr\@barredsumthickness{#1}\relax+
\ht\z@+\dp\z@
\relax
}%
\linethickness{\@barredsumthickness{#1}}%
\vphantom{\sum}%
\smash{\ooalign{$\m@th#1\sum$\cr\hidewidth$#1\@barredsumbar$\hidewidth\cr}}%
\endgroup
}
\newcommand{\@barredsumbar}{%
\vcenter{\hbox{\begin{picture}(0,1)\roundcap\Line(0,0)(0,1)\end{picture}}}%
}
\newcommand{\@barredsumthickness}[1]{% see https://tex.stackexchange.com/a/477200/
1.25\fontdimen8
\ifx#1\displaystyle\textfont\else
\ifx#1\textstyle\textfont\else
\ifx#1\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi 3
}
\makeatother
\begin{document}
\[
\sum_{i=1}^N x_i \ne \barredsum_{i=1}^N x_i
\]
\begin{center}
$\barredsum_{i=1}^N x_{\barredsum_{i=1}^N x_{\barredsum_{i=1}^N x_i}}$
\end{center}
\end{document}
答え2
egreg の回答の 1 つを改善しようとするのは、楽しく、かつ有益であると同時に、自慢できる作業でもあります。(;-) この場合、次の 2 つの理由から、受け入れられた解決策は効率の点で最適ではないと私は考えます。
絵を描きながら、例えば魔女は
picture
環境の完全な柔軟性を必要としますが、この柔軟性は単純な線を引くために必要ではありません。このソリューションでは
\vphantom
insideを使用します\mathpalette
。これはネストされたノードに相当し\mathchoice
、結果として得られる 16 個の組み合わせのそれぞれにpicture
環境が含まれます。
特に、これはコマンド\@barredsumbar
の呼び出しごとにマクロが 20 回実行されることを意味します\barredsum
。私のように、LaTeX で論文をコンパイルするのに 30 分以上かかるという輝かしい時代を経験した人は、この議論に特に敏感です。
次のコードは、\@rodriguez@overprint@bar
の各呼び出しに対してマクロを 4 回だけ実行し\barredsum
、線を描画するために TeX の基本ルール コマンドのみに依存します。追加のボーナスとして、 コマンドも定義し\barredprod
、 のバー付きバージョンを生成します\prod
。これは、構築をどのように一般化できるかを示しています。
% 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} % the code below assumes this
\makeatletter
\newcommand*\barredsum{%
\DOTSB\mathop{%
\@rodriguez@mathpalette \@rodriguez@overprint@bar \sum
}\slimits@
}
\newcommand*\barredprod{%
\DOTSB\mathop{%
\@rodriguez@mathpalette \@rodriguez@overprint@bar \prod
}\slimits@
}
% A home-brewed version of "\mathpalette" that also supplies the font
% selector (e.g., "\textfont"):
\newcommand*\@rodriguez@mathpalette[2]{%
% #1 := macro doing the actual job, which expects as its own arguments
% - #1, a style selector (e.g., "\displaystyle")
% - #2, a font selector (e.g., "\textfont")
% - #3, a custom argument (not truly necessary, here!)
% #2 := custom argument that should be passed as #3 to macro #1
\mathchoice
{#1\displaystyle \textfont {#2}}%
{#1\textstyle \textfont {#2}}%
{#1\scriptstyle \scriptfont {#2}}%
{#1\scriptscriptstyle \scriptscriptfont {#2}}%
}
\newcommand*\@rodriguez@overprint@bar[3]{%
% #1 := style selector (e.g., "\displaystyle")
% #2 := font selector (e.g., "\textfont")
% #3 := base symbol
\sbox\z@{$#1#3$}%
\dimen@ = \ht\z@ \advance \dimen@ \p@
\dimen@ii = \dp\z@ \advance \dimen@ii \p@
\dimen4 = 1.25\fontdimen 8 #2\thr@@ \relax
\ooalign{% the resulting box has the same...
\@rodriguez@bar \dimen@ \z@ \cr % ... height as the first row
$\m@th #1#3$\cr
\@rodriguez@bar \z@ \dimen@ii \cr % ... depth as the last row
}%
}
\newcommand*\@rodriguez@bar[2]{%
\hidewidth \vrule \@width \dimen4 \@height #1\@depth #2\hidewidth
}
\makeatother
\begin{document}
In display:
\[
\barredsum_{i=1}^{N} x_{i} \neq \sum_{i=1}^{N} x_{i}
\]
In-line:
\begin{center}
\( \barredsum_{i=1}^{N} x_{i} \neq \sum_{i=1}^{N} x_{i} \),
\quad
\( A_{\barredsum_{i=1}^{N} x_{i}} \neq A_{\sum_{i=1}^{N} x_{i}} \),
\quad
\( A_{B^{\barredsum_{i=1}^{N} x_{i}}} \neq A_{B^{\sum_{i=1}^{N} x_{i}}} \).
\end{center}
The barred product:
\[
\barredprod_{i=1}^{N} x_{i} \neq \prod_{i=1}^{N} x_{i}
\]
Etc.\ etc.
\end{document}
確かに、このソリューションでは、垂直バーの両端に丸いキャップがありません...
編集: 出力を示す画像を含めるつもりでしたが、明らかに忘れていました。現在これを修正中です。