파생 된 텐서 곱
Nov 15 2020
나는 semantex (매뉴얼 27 페이지에서 복사)를 사용하여 파생 된 텐서 제품을 작성하려고했습니다.
\documentclass{article}
\usepackage{amsmath,semantex}
\NewSymbolClass\MyBinaryOperator[
definekeys={
{Lder}{upper=L},
{Rder}{upper=R},
},
]
\NewObject\MyBinaryOperator\tensor{\otimes}[
definekeys={
{der}{Lder},
},
]
\NewObject\MyBinaryOperator\fibre{\times}[
% Americans are free to call it \fiber instead
definekeys={
{der}{Rder},
},
]
\begin{document}
\begin{equation}
A\tensor[R,der] B
\end{equation}
\end{document}

하지만 L이 오른쪽이 아닌 텐서 기호 위에 나타나기를 바랍니다. 이것이 가능한가?
감사!
답변
5 azetina Nov 15 2020 at 23:28
다음은 semantex
. 아이디어는 command
키 를 사용 하고 원하는 명령을 입력하는 것입니다. 이 경우 기호의 L을 초과 설정하려고합니다. 따라서 사용 command=\overset{L}
하면 충분합니다.

\documentclass{article}
\usepackage{amsmath,semantex}
\NewSymbolClass\MyBinaryOperator[
definekeys={
{Lder}{command=\overset{L}},
{Rder}{upper=R},
},
]
\NewObject\MyBinaryOperator\tensor{\otimes}[
definekeys={
{der}{Lder},
},
]
\NewObject\MyBinaryOperator\fibre{\times}[
% Americans are free to call it \fiber instead
definekeys={
{der}{Rder},
},
]
\begin{document}
\begin{equation}
A\tensor[R,der] B
\end{equation}
\end{document}
4 egreg Nov 15 2020 at 23:24
으로하는 방법은 모르겠지만 semantex
다른 도구로는 어렵지 않습니다.
\documentclass{article}
\usepackage{amsmath}
%\usepackage{xparse} % not needed with LaTeX 2020-10-01 or later
\ExplSyntaxOn
\keys_define:nn { cinque/tensor }
{
der .tl_set:N = \l__cinque_tensor_upper_tl,
der .default:n = L,
unknown .code:n = \tl_set_rescan:Nnx \l__cinque_tensor_subscript_tl { } { \l_keys_key_str },
}
\tl_new:N \l__cinque_tensor_subscript_tl
\NewDocumentCommand{\tensor}{O{}}
{
\group_begin:
\keys_set:nn { cinque/tensor } { #1 }
\tl_if_empty:NTF \l__cinque_tensor_upper_tl
{ \otimes }
{ \overset{\l__cinque_tensor_upper_tl}{\otimes} }
\tl_if_empty:NF \l__cinque_tensor_subscript_tl { \sb{\l__cinque_tensor_subscript_tl} }
\group_end:
}
\ExplSyntaxOff
\begin{document}
$A\otimes B$
$A\tensor B$
$A\tensor[R] B$
$A\tensor[der,R] B$
$A\tensor[R,der] B$
$A\tensor[\mathcal{X}] B$
\end{document}

3 AlanXiang Nov 15 2020 at 22:58

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xparse}
\usepackage{expl3}
\usepackage{amsmath}
\ExplSyntaxOn
\clist_new:N \l_doc_tmpa_clist
\tl_new:N \l_doc_tmpa_tl
\tl_new:N \l_doc_tmpb_tl
\tl_new:N \g_doc_template_a_tl
\tl_gset:Nn \g_doc_template_a_tl {
\overset{\tiny L}{*1}
}
\cs_generate_variant:Nn \tl_set_rescan:Nnn {NnV}
\DeclareDocumentCommand{\tensor}{O{}}{
\clist_set:Nn \l_doc_tmpa_clist {#1}
\tl_set:Nn \l_doc_tmpa_tl {\otimes}
\clist_map_inline:Nn \l_doc_tmpa_clist {
\str_case:nn {##1}{
{der} {
\tl_set_eq:NN \l_doc_tmpb_tl \g_doc_template_a_tl
\regex_replace_once:nnN {*1} {\u{\l_doc_tmpa_tl}} \l_doc_tmpb_tl
\tl_set_eq:NN \l_doc_tmpa_tl \l_doc_tmpb_tl
}
}
}
\clist_map_inline:Nn \l_doc_tmpa_clist {
\str_case:nn {##1}{
{R} {
\tl_set:No \l_doc_tmpa_tl {\l_doc_tmpa_tl \c_math_subscript_token {R}}
}
}
}
\mathbin{\tl_use:N \l_doc_tmpa_tl}
}
\ExplSyntaxOff
\begin{document}
\par $a \tensor[R] b$
\par $a \tensor[R,der] b$
\par $a \tensor[der] b$
\end{document}