使用带有 ifthenelse 的命令设置章节标题

使用带有 ifthenelse 的命令设置章节标题

我想用包含条件的命令设置某个部分的标题\ifthenelse

\documentclass{article}
\usepackage{ifthen}

\newcommand{\region}{Germany}   

\newcommand{\getValue}{
    \ifthenelse{\equal{\region}{Germany}}{
        Kapitel 1
    }{
        Chapter 1
    }   
}

\begin{document}
    \section{\getValue}
\end{document}

然而,这不起作用,我想知道为什么它不起作用以及如何让它工作。我在编译最小工作示例时收到很多错误,我不知道如何修复。我可以通过以下方法轻松解决示例中的问题:

\begin{document}
    
    \ifthenelse{\equal{\region}{Germany}}{
        \section{Kapitel 1}
    }{
        \section{Chapter 1}
    }   

\end{document}

但是,这种解决方法不适合我在生产中使用,因为我想getValue在这种情况下更频繁地使用该命令。我看了看这个问题然而,除了标题之外,这个问题与这个问题没有太多共同之处。

答案1

使用 ifthen 进行语言切换不是一个好主意。它的扩展性不好:想象一下,你想添加法语、意大利语、俄语、日语等选项……

但除此之外:\section 参数的内容在多个地方使用,这意味着您想要在那里使用的命令应该是健壮的。您可以定义这样的健壮命令,例如从\NewDocumentCommandxparse 中定义:

\documentclass{article}
\usepackage{ifthen,xparse}

\newcommand{\region}{Germany}

\NewDocumentCommand{\getValue}{}{%
    \ifthenelse{\equal{\region}{Germany}}{%
        Kapitel 1
    }{%
        Chapter 1
    }%
}

\begin{document}
    \section{\getValue}
\end{document}

相关内容