关注此主题带有案例/条件/“如果...那么”的新命令以及 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}