我正在创建一份简历,并使用 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}