字符串比较不适用于 textgreek

字符串比较不适用于 textgreek

按照这个问题的解决方案作为指导 -LaTeX 中是否有类似“\ifnum”的“if”命令?- 我已设置一个新命令来执行字符串比较。不幸的是,我无法从textgreek包中获取希腊字符来进行比较。

以下 MWE 显示可以比较数学模式 alpha,但由于我的希腊字符是蛋白质名称的一部分,因此我无法使用数学模式定义,因为斜体。我无法覆盖数学模式定义来删除斜体,因为当我实际使用数学公式时我仍然需要它。

我想要:

  1. 希腊字符替代品
  2. 字符串比较textgreek

梅威瑟:

\documentclass{article}
\usepackage[utf8]{inputenc}
\setlength\parindent{0pt}
\usepackage{siunitx,microtype,textcomp,textgreek}

\newcommand{\evaltest}[2]{%
    \ifnum\pdfstrcmp{#1}{#2}=0
        #1 equals #2%
    \else
        #1 does not equal #2%
    \fi
}

\begin{document}
    \begin{itemize}
        \item \evaltest{a}{b}
        \item \evaltest{a}{a}
        \item \evaltest{a a}{a a}
        \item $\alpha$
        \item \evaltest{$\alpha$}{$\alpha$}
        \item \textalpha
        %\item \evaltest{\textalpha}{\textalpha}
    \end{itemize}
\end{document} 

答案1

\pdfstrcmp语执行扩展:链接的答案确实提到参数需要是“字符串”。为了比较任意输入,使用以下方法防止扩展\unexpanded

\documentclass{article}
\usepackage[utf8]{inputenc}
\setlength\parindent{0pt}
\usepackage{siunitx,microtype,textcomp,textgreek}

\newcommand{\evaltest}[2]{%
    \ifnum\pdfstrcmp{\unexpanded{#1}}{\unexpanded{#2}}=0
        #1 equals #2%
    \else
        #1 does not equal #2%
    \fi
}

\begin{document}
    \begin{itemize}
        \item \evaltest{a}{b}
        \item \evaltest{a}{a}
        \item \evaltest{a a}{a a}
        \item $\alpha$
        \item \evaltest{$\alpha$}{$\alpha$}
        \item \textalpha
        \item \evaltest{\textalpha}{\textalpha}
    \end{itemize}
\end{document} 

(扩展很像,\edef所以后者中安全的东西在中也是安全的\pdfstrcmp。这可能有用,但这里没有!)

答案2

一定要这样吗pdfstrcmp?如果不是,你应该研究一下etoolbox。例如:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\setlength\parindent{0pt}
\usepackage{etoolbox}
\usepackage{siunitx,microtype,textcomp,textgreek}

\newcommand{\evaltest}[2]{%
    \ifnum\pdfstrcmp{#1}{#2}=0
        #1 equals #2%
    \else
        #1 does not equal #2%
    \fi
}

\newcommand{\etest}[2]{%
  \ifdefequal{#1}{#2}{#1 equals #2}{#1 does not equal #2}}

\begin{document}
    \begin{itemize}
        \item \evaltest{a}{b}
        \item \evaltest{a}{a}
        \item \evaltest{a a}{a a}
        \item $\alpha$
        \item \evaltest{$\alpha$}{$\alpha$}
        \item \textalpha
        \item \etest{\textalpha}{\textalpha}
        \item \etest{\textalpha}{\textbeta}
        \item \etest{\textbeta}{\textbeta}
    \end{itemize}
\end{document}

相关内容