可选择显示/启用或隐藏/禁用文本

可选择显示/启用或隐藏/禁用文本

我的背景是软件开发和面向对象编程。因此,我遇到了以下关于 LaTeX 的问题。

我得到了以下命令,它定义了联系人的属性。

\usepackage{tabularx}
\usepackage{xkeyval}
\usepackage{hyperref}

% define the key (arguments)
\makeatletter
\define@key{personkeys}{name}{%
  \def\personname{#1}
}
\define@key{personkeys}{phone}{%
  \def\personphone{#1}
}
\define@key{personkeys}{email}{%
  \def\personemail{#1}
}
\makeatother
% end of key definition

\newcommand{\contact}[2][]{%
    \setkeys{personkeys}{#1}%

    \personname \newline
    \href{mailto:\personemail}{\nolinkurl{\personemail}} \newline
    \personphone \bigskip
}

然后,该命令用于指定文档中经常使用的人员。然后,可以通过命令 \johndoe 访问此类人员。

\newcommand{\johndoe}{
    \contact[
    name={Mr John Doe}, 
    email={[email protected]}, 
    phone={+00 00 012345}
    ];
}

问题是,有些人愿意填写他们的电话号码,而有些人则不愿意。不过,我希望在命令中填写号码,只需设置一个标志,例如隐藏电话然后由命令定义进行解释。

\newcommand{\johndoe}{
    \contact[
    name={Mr John Doe}, 
    email={[email protected]}, 
    phone={+00 00 012345},
    hidePhone=True
    ];
}

问题:有没有办法让命令根据标志显示或隐藏文本?否则我只能将电话号码和/或电子邮件地址留空。

评论:我看过这篇文章并且这个,但两者都关心文档范围内文本片段的启用/禁用。我需要每个命令。

答案1

您可以这样做(进一步利用-package xkeyval):

\documentclass{article}

\usepackage{tabularx}
\usepackage{xkeyval}
\usepackage{hyperref}

% define the key (arguments)
\makeatletter
\define@key{personkeys}{name}{%
  \def\personname{#1}
}
\define@key{personkeys}{phone}{%
  \def\personphone{#1}
}
\define@key{personkeys}{email}{%
  \def\personemail{#1}
}
\define@boolkey{personkeys}[my]{hidePhone}{}
\makeatother
% end of key definition

\newcommand{\contact}[2][]{%
    \setkeys{personkeys}{#1}%

    \personname \newline
    \href{mailto:\personemail}{\nolinkurl{\personemail}} \ifmyhidePhone\else\newline
    \personphone \fi\bigskip
}

\newcommand{\johndoe}{
    \contact[
    name={Mr John Doe}, 
    email={[email protected]}, 
    phone={+00 00 012345},
    hidePhone=True
    ];
}
\newcommand{\janedoe}{
    \contact[
    name={Ms Jane Doe}, 
    email={[email protected]}, 
    phone={+00 00 012345},
    hidePhone=False
    ];
}


\begin{document}
\johndoe
\janedoe
\end{document}

结果

相关内容