按照这个问题的解决方案作为指导 -LaTeX 中是否有类似“\ifnum”的“if”命令?- 我已设置一个新命令来执行字符串比较。不幸的是,我无法从textgreek
包中获取希腊字符来进行比较。
以下 MWE 显示可以比较数学模式 alpha,但由于我的希腊字符是蛋白质名称的一部分,因此我无法使用数学模式定义,因为斜体。我无法覆盖数学模式定义来删除斜体,因为当我实际使用数学公式时我仍然需要它。
我想要:
- 希腊字符替代品
- 字符串比较
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}