在符号宏 (\listofsymbol) 中将 \dot 居中

在符号宏 (\listofsymbol) 中将 \dot 居中

我试图实现listofsymbol在带后缀调用时获取生成的列表中列出的变量的结果-dot。我还试图找到一种dot使用下标将变量居中的方法(不使用包的下标列表功能)。

为此,我们\checkUnderscore实现了一个宏,尝试_在字符串中查找字符,在下标前拆分并插入命令。

但是如果宏有一个\mathbf指令,那么点就会打印在变量的最左边。

我找不到此行为的解决方案,但我认为这是我的宏中的一个错误。您有什么想法吗?提前致谢

一个简单的例子:

\documentclass{article}
\usepackage{xstring}
\usepackage[final]{listofsymbols}

\newcommand{\checkUnderscore}[1]{\IfSubStr{#1}{_}{\dot{\StrBefore{#1}{_}}_{\StrBehind{#1}{_}}}{\dot{#1}}}

\makeatletter
\renewcommand{\@createsym}[3]
{\expandafter\newcommand\expandafter{\csname#2\endcsname}{\relax\ensuremath{#3}\spaceaftersym\expandafter\protected@xdef\csname#2isused\endcsname {yes}} %evntl. gdef
\expandafter\newcommand\expandafter{\csname#2doc\endcsname}{#1}
\expandafter\newcommand\expandafter{\csname#2tabdoc\endcsname}{\ensuremath{#3} & #1}
\expandafter\newcommand\expandafter{\csname#2isused\endcsname}{no}
\expandafter\newcommand\expandafter{\csname#2dot\endcsname}{\relax\ensuremath{\expandafter\checkUnderscore#3}\spaceaftersym\expandafter\protected@xdef\csname#2isused\endcsname {yes}}}
\makeatother

\opensymdef
\newsym[Test A]{symA}{x}
\newsym[Test B]{symB}{x_{p}}
\newsym[Test C]{symC}{\mathbf{x}}
\newsym[Test D]{symD}{\mathbf{x}_{p}}
\closesymdef


\begin{document}
\begin{itemize}
\item Here's my symbol $\symAdot$, 
\item and the other one with subscript $\symBdot$,
\item and the other one bold $\symCdot$,
\item and the other bold one with subscript $\symDdot$,
\end{itemize}

\listofsymbols
\end{document}

在此处输入图片描述

答案1

在所有情况下,只需\dot在对象前面写上,就行了,只是不要添加额外的括号。下划线测试是不必要的。

示例输出

\documentclass{article}

\usepackage[final]{listofsymbols}

\makeatletter
\renewcommand{\@createsym}[3]
{\expandafter\newcommand\expandafter{\csname#2\endcsname}{\relax\ensuremath{#3}\spaceaftersym\expandafter\protected@xdef\csname#2isused\endcsname {yes}} %evntl. gdef
\expandafter\newcommand\expandafter{\csname#2doc\endcsname}{#1}
\expandafter\newcommand\expandafter{\csname#2tabdoc\endcsname}{\ensuremath{#3} & #1}
\expandafter\newcommand\expandafter{\csname#2isused\endcsname}{no}
\expandafter\newcommand\expandafter{\csname#2dot\endcsname}{\relax
\ensuremath{\dot #3}\spaceaftersym\expandafter\protected@xdef\csname#2isused\endcsname {yes}}}
\makeatother

\opensymdef
\newsym[Test A]{symA}{x}
\newsym[Test B]{symB}{x_{p}}
\newsym[Test C]{symC}{\mathbf{x}}
\newsym[Test D]{symD}{\mathbf{x}_{p}}
\closesymdef


\begin{document}
\begin{itemize}
\item Here's my symbol $\symAdot$, 
\item and the other one with subscript $\symBdot$,
\item and the other one bold $\symCdot$,
\item and the other bold one with subscript $\symDdot$,
\end{itemize}

\listofsymbols
\end{document}

相关内容