这是一个最小问题示例
\ProvidesClass{cvMinimal}[2012/04/30 CV class]
\NeedsTeXFormat{LaTeX2e}
\LoadClass{article}
%%%%%%%%%%
% Colors %
%%%%%%%%%%
\RequirePackage{xcolor}
\definecolor{green}{HTML}{C2E15F}
\definecolor{gray}{HTML}{4D4D4D}
%%%%%%%%%
% Fonts %
%%%%%%%%%
\RequirePackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text, Color=gray]{Helvetica Neue Light}
%%%%%%%%%%
% Header %
%%%%%%%%%%
\RequirePackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\header}[0]{%
\begin{tikzpicture}[remember picture, overlay]
\node[](name){\fontsize{24pt}{72pt}\selectfont\color{green}{My Name}}; %
\end{tikzpicture}
}
生成灰色的“我的名字”,而我期望生成绿色的。注释掉 setmainfont 行可以解决问题。
有人能解释一下我做错了什么吗?以及如何在不注释文档其余部分中很重要的 setmainfontline 的情况下获得我想要的内容?
我知道这是可能的,因为它是在简历中实现的这里。
答案1
正如我在评论中所建议的,“手动”方式是根据\addfontfeature
需要调用。另一种解决方案是使用 选项SizeFeatures
。fontspec
两者如下所示。(我使用了 Adobe 的源 Sans Pro因为我没有 Helvetica。)
\documentclass{article}
\usepackage{xcolor}
\definecolor{green}{HTML}{C2E15F}
\definecolor{gray}{HTML}{4D4D4D}
%%%%%%%%%
% Fonts %
%%%%%%%%%
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[ Mapping=tex-text,
SizeFeatures={
{Size={-24}, Color=gray},
{Size={24-}, Color=green}}
]{Source Sans Pro}
%%%%%%%%%%
% Header %
%%%%%%%%%%
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\header}[0]{%
\begin{tikzpicture}[remember picture, overlay]
% \node[](name){% <-- manual solution
% \fontsize{24pt}{72pt}\selectfont%
% {\addfontfeatures{Color=green}{My Name}}};
%
\node[](name2){% <-- uses SizeFeatures
\fontsize{24pt}{72pt}\selectfont {My Name2}};
\end{tikzpicture}
}
\begin{document}
\header
my name;
\fontsize{24pt}{72pt}\selectfont my name;
\end{document}
答案2
我认为最好定义单独的字体系列:一个用于主文本字体,另一个用于特殊项目。以下是示例。
\documentclass{article}
\usepackage{xcolor}
\definecolor{cvgreen}{HTML}{C2E15F} % give distinctive names to colors
\definecolor{cvgray}{HTML}{4D4D4D}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Color=cvgray]{Helvetica Neue Light}
\newfontfamily{\greenHelv}[Ligatures=TeX,Color=cvgreen]{Helvetica Neue Light}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\header}[1]{%
\begin{tikzpicture}[remember picture, overlay]
\node[](name){\fontsize{24pt}{72pt}\greenHelv #1};
\end{tikzpicture}
}
\begin{document}
\header{My Name}
\bigskip
\noindent Some text following
\end{document}