如何将大量定制的部分(sectsty+fontspec)变为大写?

如何将大量定制的部分(sectsty+fontspec)变为大写?

我正在尝试自定义某个方面,scrbook使其看起来像我拥有的​​一本书。

在我的例子中,各部分的格式应如下:字体应为Conques Demi,字体大小为26 pt,字体颜色为特定的深红色(CMYK:0% 87% 87% 50%),且字体颜色1 pt为粗线,且宽度大于列宽,标签应为大写并右对齐。

由于我还没有弄清楚如何使用 KOMA 脚本绘制彩色线条规则,因此我尝试使用其他软件包来避免这种结果。如果您知道如何获得我上面描述的确切结果,请随时在 KOMA 中向我展示如何操作!提前致谢!

无论如何,我设法模仿了字体、大小和颜色、规则和对齐方式,但当我尝试将标签设为大写时,我开始遇到问题。请注意,即使我删除对该fontspec包及其所有命令的任何引用,问题仍然存在。考虑以下内容最小工作示例

\documentclass[twocolumn]{scrbook}

\usepackage{xcolor}
\usepackage{sectsty}
\usepackage{fontspec}

\setcounter{secnumdepth}{0}
\definecolor{darkred}{cmyk}{0.0,0.87,0.87,0.50}
\newfontfamily\myfont[]{Conques}
\sectionfont{\raggedleft\myfont\Huge\color{darkred}\sectionrule{0pt}{0pt}{-2pt}{1pt}} %

\begin{document}
\mainmatter
\section{A Section} % (fold)
\label{sec:a_section}
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
% section a_section (end)
\end{document}

正如其他答案(针对更简单的情况)所建议的那样,为了将该部分的标签大写,我应该将其添加\uppercase到命令的末尾\sectionfont{...}。但是,如果我这样做,我会收到警告,{缺少 a 并且\begin{document}由 关闭\end{DOCUMENT}。如果我打开结果.pdf,则所有文档都是大写的,除了A Section在第一次出现下方出现的附加的,并且规则消失了。

\uppercase我认为,这是因为参数命令,而在这里它被用作“绝对”语句。事实上,我认为第二次出现A Section是由于\uppercase混淆了目录的节标题定义,导致目录变为空。

根据我的研究,没有这样的“绝对” \uppercase等效。有些答案建议使用\MakeUppercase相反的方法,因为在某些情况下它更“尊敬的”周围环境。但是,如果我这样做,我会得到以下结果:[0pt][r]空行开头的字符串带有规则,该规则超出了垂直列边框;正确的部分标签出现在下方,不是大写,没有规则,但正确地移到了右侧。即使这可能建议重新排序内部命令\sectionfont{...},但实际上没有排列起作用。我甚至尝试过textcase包及其\MakeTextUppercase命令,但完全没有运气。

有人能告诉我我错在哪里以及如何解决这个问题吗?


答案1

如果可以使用 KOMA,\setkomafont{section}{<decl>}那么任务就相当简单了,因为其中的最后一个命令可能有一个参数。KOMA 没有,\sectionrule但可以使用 LaTeX 的\rule[<raise>]{<width>}{<thickness>}命令定义类似的东西。

因此也许是类似下面的内容:

\documentclass[twocolumn]{scrbook}

% choose the font:
\usepackage{fontspec}
% I don't have `Conques' installed, so I use another font
% I also added a `LetterSpace' greater than zero as all-caps
% words _always_ should be spaced out a little
\newfontfamily\sectionfont[LetterSpace=2]{Linux Libertine O}

% define the color:
\usepackage{xcolor}
\definecolor{darkred}{cmyk}{0.0,0.87,0.87,0.50}
\colorlet{section}{darkred}

% the section layout:    
\newcommand\sectionrule{%
  \makebox[0pt][l]{\rule[-.25ex]{\linewidth}{1pt}}}
\newcommand\sectionformat[1]{%
  \sectionfont\Huge\color{section}%
  \sectionrule
  \hfill\MakeUppercase{#1}}
\setkomafont{section}{\sectionformat}
\setcounter{secnumdepth}{0}

\begin{document}
\mainmatter
\section{A Section}\label{sec:a_section}

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

\end{document}

在此处输入图片描述

相关内容