5
4

2 に答える 2

4

次のように動作します。

\documentclass[letterpaper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage{german}
\usepackage{geometry}
\geometry{margin=2cm}
\newcommand*\origsffamily{}
\let\origsffamily\sffamily
\renewcommand*\sffamily{\origsffamily\small {\renewcommand\&{{\scalebox{1.2}{\textnormal{\fontspec{Baskerville}\itshape\amp}}}}}}

\begin{document}


hello, this is \& a \sffamily test \& 


\end{document}

つまり、アンパサンド記号の変更を (私の例では) の定義に含めます\sffamily

欠点は、もちろん、必要なすべてのフォント ファミリに対してこれを行う必要があることです。

于 2010-07-05T15:36:25.263 に答える
2

標準の LaTeX トークン リストをテストできますが\f@family、これは必要なほど信頼できない場合があります。\setmainfont次のコードは、現在のファミリがおよびによって設定されたデフォルトのファミリと等しいかどうかを単純にチェックします\setsansfontが、フォントが本当にサンセリフであるかどうかはチェックしません。

\documentclass{article}

\usepackage{fontspec}
\usepackage{expl3}
\usepackage{xparse}

\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}

\makeatletter
\ExplSyntaxOn
\NewDocumentCommand \amp { } {
  \tl_if_eq:NNTF \f@family \rmdefault {
    % this is a roman font
    A
  } {
    \tl_if_eq:NNTF \f@family \sfdefault {
      % this is a sans font
      B
    } {
      % something else
      C
    }
  }
}
\ExplSyntaxOff
\makeatother


\begin{document}

test \amp\ test

\sffamily
test \amp\ test

\ttfamily
test \amp\ test

\end{document}
于 2010-07-05T16:07:48.093 に答える