如果链接为空则隐藏外部链接的符号

如果链接为空则隐藏外部链接的符号

我正在创建一份简历,并使用 Latex 模板。有一个为项目定义的特定命令,它有两个参数:项目名称和项目 URL。然后,它以大粗体字母打印项目名称,并创建一个指向项目的外部链接符号。代码如下:

% Project command
\newcommand{\Project}[2]{
\runsubsection{%
\href{#2}{\uppercase{#1} \,\faExternalLink}
}
\hfill
}

我的问题是,对于我的某些项目,我没有外部链接(没有第二个参数)。但是,如果我将第二个参数留空,它仍会创建外部链接的符号,只是您无法单击该符号,但该符号仍会出现在最终文档中。如果 \Project命令的第二个参数留空,有什么方法可以删除外部链接的符号吗?

答案1

我建议将外部链接设为可选参数:

\NewDocumentCommand{\Project}{om}{%
  \IfNoValueTF{#1}{% no external link
    \runsubsection{\uppercase{#2}}%
  }{% external link
    \runsubsection{\href{#1}{\uppercase{#2} \faExternalLink}}%
  }%
}

被称为

\Project{Something with no link}

或者

\Project[http://example.com]{Something with a link}

如果您拥有 2020-10-01 之前发布的 LaTeX,那么您还需要\usepackage{xparse}

但是,这会产生几个警告,因为\uppercase实际上不允许\href。更好的代码如下。

\documentclass{article}
\usepackage{fontawesome5}
\usepackage{hyperref}

\newcommand{\runsubsection}{\subsection} % just for the test

\NewDocumentCommand{\Project}{om}{%
  \IfNoValueTF{#1}{% no external link
    \runsubsection{\texorpdfstring{\MakeUppercase{#2}}{#2}}%
  }{% external link
    \runsubsection{\href{#1}{\texorpdfstring{\MakeUppercase{#2}}{#2}\texorpdfstring{ \faLink}{}}}%
  }%
}

\begin{document}

\Project{Something with no link}

\Project[http://example.com]{Something with a link}

\end{document}

在此处输入图片描述

注意:我使用是\faLink因为\faExternalLink需要的专业版本fontawesome5

您还可以使用 的可扩展版本\MakeUppercase,它也会将书签变为大写。

\documentclass{article}
\usepackage{fontawesome5}
\usepackage{hyperref}

\newcommand{\runsubsection}{\subsection} % just for the test

\ExplSyntaxOn
\cs_set_eq:NN \xMakeUppercase \text_uppercase:n
\ExplSyntaxOff

\NewDocumentCommand{\Project}{om}{%
  \IfNoValueTF{#1}{% no external link
    \runsubsection{\xMakeUppercase{#2}}%
  }{% external link
    \runsubsection{\href{#1}{\xMakeUppercase{#2}\texorpdfstring{ \faLink}{}}}%
  }%
}

\begin{document}

\Project{Something with no link}

\Project[http://example.com]{Something with a link}

\end{document}

相关内容