将小型大写字母和无衬线字体结合起来?

将小型大写字母和无衬线字体结合起来?

可以将小型大写字母 ( \textsc) 和无衬线字体 ( \textsf) 结合起来吗?我使用的是默认的 LaTeX 字体。

答案1

您可以按任意顺序嵌套\textsf\textsc但除非有该形式的字体,否则 LaTeX 将发出警告并替换为不同的样式。

确实有效且没有任何警告的是newtxtext字体集。

在此处输入图片描述

\documentclass{article}
\usepackage{newtxtext}
\begin{document}

sc-sf \textsc{\textsf{One two Three}}


sf-sc \textsf{\textsc{One two Three}}

\end{document}

答案2

对于字体不支持小写字母的情况,我最近编写了一个小脚本,可以将小写字母转换为较小的大写字母。它甚至可以与 ä、ö、ü 和 ß 配合使用。

\c{textsmaller}[2]可以替换为\c{textscale}\cB\{0.7\cE\}以使可定制性更加细化。

当某人的具体情况未被涵盖时,以下步骤可能会有所帮助:

  • 在正则表达式命令中包含一个特殊例外
  • [^A-Z]用。。。来代替[a-z]
  • \0用。。。来代替\1
\usepackage[utf8]{inputenc}
\usepackage{xparse,relsize}

\ExplSyntaxOn

\NewDocumentCommand{\textsmallcaps}{ m }{% Define new command with one mandatory argument
    \textapperance_smallcaps:n { #1 }% Call
}%

\tl_new:N \l__textapperance_textsmallcaps_input_tl% Initialize string variable
\cs_new_protected:Npn \textapperance_smallcaps:n #1 
{% Create hidden command with one argument
    \tl_set:Nx \l__textapperance_textsmallcaps_input_tl { #1 } % Fully expand contents and store them in the variable
    \regex_replace_all:nnN 
    { ([^A-Z]+) } 
    { \c{textsmaller}[2]\cB\{\c{uppercase}\cB\{\0\cE\}\cE\} } 
    \l__textapperance_textsmallcaps_input_tl % Replace everything thats NOT a capital letter by \textsmaller[2]{\uppercase{<match>}}
    \tl_use:N \l__textapperance_textsmallcaps_input_tl   % Return
}
 
\ExplSyntaxOff

相关内容