用新命令取代性别定义词

用新命令取代性别定义词

关注此主题带有案例/条件/“如果...那么”的新命令以及 Peter Grill 的回答 我尝试将示例更改为另一个用例:使我的文档中的性别更容易区分。有一个可用的性别包,但它没有提供我需要的东西。

我按照以下方式设置代码,但如果编译,总是会出现错误或文档完全损坏(尝试了多种方法,例如将“1”更改为“m” - 但显然我不知道我在做什么):

\documentclass{article}
\usepackage{xstring}

\newcommand{\genderhelp}[1]{%
\IfEqCase{#1}{%
        {experten}{Experten*innen}%
        {forscher}{Forscher*innen}%
        % you can add more cases here as desired
}[\PackageError{tree}{Undefined option to genderhelp: #1}{}]%
}%

\begin{document}
\genderhelp{experten}

\section{Die Hilfe von \genderhelp{forscher}}

\end{document}

所以我想要实现的是:给命令一个我已经定义的单词,它会输出定义的字符串...当然我可以在整个文档中搜索和替换,但这似乎不是正确的方法 - 例如,如果带有“*”的书写不再正确,我只有一个地方可以更改它。当然还有一些学习,了解这个 Latex 是如何工作的 ;)

多谢!

答案1

明显的问题是\genderhelp,正如您所定义的, 是脆弱的。您可以使用\DeclareRobustCommand代替\newcommand

更好的方法是使用expl3

\documentclass{article}

%\usepackage{xparse} % uncomment for LaTeX prior to 2020-10-01

\ExplSyntaxOn
\NewDocumentCommand{\setgenderhelpers}{m}
 {
  \tl_gput_right:Nn \g_genderhelp_list_tl { #1 }
 }
\tl_new:N \g_genderhelp_list_tl

\NewDocumentCommand{\genderhelp}{m}
 {
  \str_case:nVF { #1 } \g_genderhelp_list_tl
   {
    \PackageError{tree}{Undefined option to genderhelp: #1}{}
   }
 }
\ExplSyntaxOff

\setgenderhelpers{
  {experten}{Experten*innen}
  {forscher}{Forscher*innen}
}

\begin{document}

\genderhelp{experten}

\section{Die Hilfe von \genderhelp{forscher}}

\end{document}

您会发现,助手的设置更加简单。通过这种方法,您可以在文件中定义助手列表,但用户可以根据需要在文档前言中.sty添加助手。\setgenderhelpers

在此处输入图片描述

答案2

如果你只是想用另一个单词替换一个单词,则不需要进行复杂的 xstring 搜索:

\documentclass{article}


\newcommand\GENDERexperten{Experten*innen}
\newcommand\GENDERforscher{Forscher*innen}
\newcommand{\genderhelp}[1]{%
\ifcsname GENDER#1\endcsname
  \csname GENDER#1\endcsname
\else 
  \PackageError{tree}{Undefined option to genderhelp: #1}{}%
\fi}

\begin{document}
\genderhelp{experten}

\section{Die Hilfe von \genderhelp{forscher}}

\end{document} 

答案3

\documentclass{article}
\usepackage{xstring}

\NewDocumentCommand{\genderhelp}{m}{%
\IfEqCase{#1}{%
        {experten}{Experten*innen}%
        {forscher}{Forscher*innen}%
        % you can add more cases here as desired
}[\PackageError{tree}{Undefined option to genderhelp: #1}{}]%
}%

\begin{document}
\genderhelp{experten}

\section{Die Hilfe von \genderhelp{forscher}}

\end{document}

相关内容