带星号的章节标题中出现假小写字母

带星号的章节标题中出现假小写字母

我想使用此解决方案由@egreg 输入假小型大写字母。

由于我必须对大写/小写字母使用某些特定的字体大小,因此我\fontsize{}{}\selectfont在命令定义中使用了一些字体大小。

由于我必须在章节标题中使用假小写字母,因此我重新定义\@makechapterhead\@makeschapterhead 来自book班级如下所示并使用\fakesc{#1}

用的时候没问题\chapter{}\chapter*{}用的时候就出现问题了\tableofcontents,我觉得是因为用了\chapter*{}

我同意最好使用支持小型大写字母的字体,但不幸的是我必须使用不支持小型大写字母的特定字体。

运行时第一个错误xelatex mwe.tex

(/usr/local/texlive/2018/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
(./mwe.aux)
! Improper alphabetic constant.
<to be read again> 
                   \contentsname 
l.66 \tableofcontents

? 

平均能量损失

\documentclass[a5paper]{book}
\usepackage{showframe}
\usepackage{fontspec}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\fakesc}{ o m }
 {
  \guido_fakesc:n { #2 }
  \IfNoValueTF{#1}
   {
    \tl_use:N \l__guido_temp_tl
   }
   {
    \cs_set_eq:NN #1 \l__guido_temp_tl
   }
 }
\cs_new_protected:Npn \guido_fakesc:n #1
 {
  \tl_set:Nn \l__guido_text_tl { #1 }
  \tl_replace_all:Nnn \l__guido_text_tl { ~ } { \q_space }
  \tl_set:Nn \l__guido_temp_tl { \group_begin:  }
  \tl_map_inline:Nn \l__guido_text_tl
   {
    \token_if_eq_meaning:NNTF ##1 \q_space
     {
      \tl_put_right:Nn \l__guido_temp_tl { ~ }
     }
     {
      \int_compare:nTF { \char_value_uccode:n { `##1 } = `##1 }
       {
        \tl_put_right:Nn \l__guido_temp_tl { {\fontsize{20}{22}\selectfont ##1} }
       }
       {
        \tl_put_right:Nn \l__guido_temp_tl { \tl_upper_case:n {\fontsize{14}{14}\selectfont ##1 } }
       }
     }
   }
  \tl_put_right:Nn \l__guido_temp_tl { \group_end: }
 }
\quark_new:N \q_space
\tl_new:N \l__guido_text_tl
\tl_new:N \l__guido_temp_tl
\ExplSyntaxOff

\makeatletter

\def\@makechapterhead#1{%
  \begin{center}
  \thechapter\par\vskip 5pt
  \fakesc{#1}
  \end{center}
  \vskip 4cm\interlinepenalty\@M
}

\def\@makeschapterhead#1{%
  \begin{center}
  \fakesc{#1} %% <---------- problem here
  \end{center}
  \vskip 4cm\interlinepenalty\@M
}

\makeatother

\begin{document}
\tableofcontents %% <-------- problem

\chapter*{Introduction}
foo

\chapter{title}
foo

\end{document}

相关内容