自定义布尔标签

自定义布尔标签

我为我的课本创建了一个布尔值studentversion,它可以在 CarLatex 的建议下隐藏或显示一些老师的内容。(参见主题:https://tex.stackexchange.com/a/478695/169294

是否可以为真/假语句链接一个关键词?在我看来,我希望有布​​尔值:'version',可以设置为'student'(真)或'teacher'(假)。这样我就可以写:\setbool{version}{teacher}而不是\setbool{studentversion}{false}

MWE 将是:

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{etoolbox}


%%Current behaviour
\newbool{studentversion}
\setbool{studentversion}{false}

%%Desired behaviour
%\newbool{version}
%\setbool{version}{teacher}

\begin{document}

    \ifbool{studentversion}%
        {The studentversion boolean is set to true}%
        {The studentversion boolean is set to false}
\end{document}

我想这是一个细节,但我确信它可以帮助我使我的文件更清晰,以供以后使用。

答案1

以下是一个替代语法的建议。我们定义一个新命令\setversion,该命令以 或student作为teacher参数,并studentversion相应地设置布尔值。对于任何其他参数,都会报告错误。

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{etoolbox}

%%Current behaviour
\newbool{studentversion}
\setbool{studentversion}{false}

%%Desired behaviour
%\newbool{version}
%\setbool{version}{teacher}

\newcommand\setversion[1]{%
    \def\tempa{#1}%
    \def\tempb{student}%
    \ifx\tempa\tempb
        \setbool{studentversion}{true}%
    \else
        \def\tempb{teacher}%
        \ifx\tempa\tempb
            \setbool{studentversion}{false}%
        \else
            \errmessage{Unknown value for studentversion: #1}%
        \fi
    \fi
}

\begin{document}

    \setversion{student}%
    \ifbool{studentversion}%
        {The studentversion boolean is set to true}%
        {The studentversion boolean is set to false}

    \setversion{teacher}%
    \ifbool{studentversion}%
        {The studentversion boolean is set to true}%
        {The studentversion boolean is set to false}

    % \setversion{other}%
\end{document}

输出

在此处输入图片描述

相关内容