节标题中的大写字母间距

节标题中的大写字母间距

我用titlesec它来自定义我的部分标题。我希望我的小节采用大写字母,这可以通过该\uppercase功能实现,但所有印刷风格指南都建议大写字母应增加空间。

microtype包装可以根据以下情况增加字母间距: 扩大字距(= 字母间距)

该线程提到了一个命令,\textls我曾尝试将其插入到 titlesec 选项中,但 TexShop 在排版时抛出错误。

或者,使用开关\lsstyle也不起作用。

以下是 MWE 的内容:

\documentclass{article}

\usepackage[letterspace=150]{microtype}

\usepackage{titlesec}
\titleformat{\section}{\large}{\thesection}{1em}{}
\titlespacing{\section}{0pt}{2.5ex}{2.5ex}
\titleformat{\subsection}{\small\uppercase\lsstyle}{\thesubsection}{1em}{}
\titlespacing{\subsection}{0pt}{2.5ex}{0ex}
\titleformat{\subsubsection}{\sffamily\itshape}{\thesubsubsection}{1em}{}
\titlespacing{\subsubsection}{0pt}{1.5ex}{0ex}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]{\normalfont\normalsize}{\thesubparagraph}{1em}{}

\title{Minimal Working Example}
\date{}
\author{Author}

\begin{document}
\maketitle

\section{Section 1}
Content

\subsection{Subsection, my friend}

\end{document} 

编辑:我在非 MWE 中使用 XeLaTeX 访问系统字体。我收到的错误(请参阅下面答案的评论)发生在 XeLaTeX 中。

答案1

您应该使用\MakeUppercase,而不是\uppercase,尽管它们在 XeLaTeX 或 LuaLaTeX 上下文中几乎等效。

letterspacingfor选项microtype不能与 XeLaTeX 一起使用,但可以用 代替\addfontfeatures{LetterSpace=...}

这是一个可行的例子;可能在使用 XeLaTeX 时重新定义\lsstyle,但我认为最好不要这样做,而使用个人命令。

\documentclass{article}
\usepackage{ifluatex}
\usepackage{fontspec}
\usepackage{microtype}

\setmainfont[Ligatures=TeX]{Linux Libertine O}

\ifluatex
  \microtypesetup{letterspace=150}
  \newcommand{\myletterspacing}{\lsstyle}
\else
  \newcommand{\myletterspacing}{\addfontfeatures{LetterSpace=20}}
\fi

\usepackage{titlesec}
\titleformat{\section}{\large}{\thesection}{1em}{}
\titlespacing{\section}{0pt}{2.5ex}{2.5ex}
\titleformat{\subsection}{\small\myletterspacing\MakeUppercase}{\thesubsection}{1em}{}
\titlespacing{\subsection}{0pt}{2.5ex}{0ex}
\titleformat{\subsubsection}{\sffamily\itshape}{\thesubsubsection}{1em}{}
\titlespacing{\subsubsection}{0pt}{1.5ex}{0ex}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]{\normalfont\normalsize}{\thesubparagraph}{1em}{}

\usepackage{lipsum}

\title{Minimal Working Example}
\date{}
\author{Author}

\begin{document}
\maketitle

\section{Section 1}
Content

\subsection{Subsection, my friend}

\lipsum[1]

\myletterspacing
\lipsum[2]

\end{document} 

在此处输入图片描述

答案2

您需要将其放在命令\lsstyle之前\uppercase,而不是之后。

示例输出

\documentclass{article}

\usepackage[letterspace=150]{microtype}

\usepackage{titlesec}
\titleformat{\section}{\large}{\thesection}{1em}{}
\titlespacing{\section}{0pt}{2.5ex}{2.5ex}
\titleformat{\subsection}{\small\lsstyle\uppercase}{\thesubsection}{1em}{}
\titlespacing{\subsection}{0pt}{2.5ex}{0ex}
\titleformat{\subsubsection}{\sffamily\itshape}{\thesubsubsection}{1em}{}
\titlespacing{\subsubsection}{0pt}{1.5ex}{0ex}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]{\normalfont\normalsize}{\thesubparagraph}{1em}{}

\usepackage{lipsum}

\title{Minimal Working Example}
\date{}
\author{Author}

\begin{document}
\maketitle

\section{Section 1}
Content

\subsection{Subsection, my friend}

\lipsum[1]

\lsstyle
\lipsum[2]

\end{document} 

更新 的这个特定功能microtype不适用于 XeLaTeX。但您可以通过 来使用字体功能fontspec。 特别是\addfontfeature{LetterSpace=15}似乎是您所追求的那种东西:

xelatex 样本

\documentclass{article}

\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times}

\usepackage{titlesec}
\titleformat{\section}{\large}{\thesection}{1em}{}
\titlespacing{\section}{0pt}{2.5ex}{2.5ex}
\titleformat{\subsection}{\small\addfontfeature{LetterSpace=15}\uppercase}{\thesubsection}{1em}{}
\titlespacing{\subsection}{0pt}{2.5ex}{0ex}
\titleformat{\subsubsection}{\sffamily\itshape}{\thesubsubsection}{1em}{}
\titlespacing{\subsubsection}{0pt}{1.5ex}{0ex}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]{\normalfont\normalsize}{\thesubparagraph}{1em}{}

\usepackage{lipsum}

\title{Minimal Working Example}
\date{}
\author{Author}

\begin{document}
\maketitle

\section{Section 1}
Content

\subsection{Subsection, my friend}

\lipsum[1]

\end{document} 

答案3

使用

\titleformat{\subsection}{\small\lsstyle\uppercase}{\thesubsection}{1em}{}

\lsstyle它改变了和的顺序\uppercase

答案4

看来我的问题是与 XeLaTex 有关。

Gonzalo Medina 对这个类似的问题给出了答案:回忆录章节标题的字母间距

在他的第二篇 MWE 中,他提供了使用该soul包的一个例子titlesec

在下面的 MWE 中,我以类似的方式将间距应用于章节标题。

除了调用和定义包之外,还要注意在每个格式行的末尾soul使用[explicit]previouslytitlesec和invoke 。soul

再次,这是用于fontspec定义字体的 XeLaTex 排版。

根据soul文档:http://texdoc.net/texmf-dist/doc/latex/soul/soul.pdf 参数如下:

\sodef⟨cmd⟩{⟨字体⟩}{⟨字母间距⟩}{⟨内部空间⟩}{⟨外部空间⟩}

\documentclass{article}

\usepackage{fontspec,xltxtra,xunicode,setspace}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont[Mapping=tex-text]{Arno Pro}
\setsansfont[Scale=MatchLowercase,Mapping=tex-text]{Century Gothic}
\setmonofont[Scale=MatchLowercase]{Inconsolata}

\usepackage{lipsum}

\usepackage{soul}
\sodef\soSection{}{.1em}{.5em plus.1em}{.1em plus.1em minus.1em}
\sodef\soSubsection{}{.1em}{.5em plus.1em}{.1em plus.1em minus.1em}
\sodef\soSubsubsection{}{.1em}{.5em plus.1em}{.1em plus.1em minus.1em}

\usepackage[explicit]{titlesec}
\titleformat{\section}{\large}{\thesection}{1em}{\soSection{#1}}
\titlespacing{\section}{0pt}{2.5ex}{2.5ex}
\titleformat{\subsection}{\small\uppercase}{\thesubsection}{1em}{\soSubsection{#1}}
\titlespacing{\subsection}{0pt}{2.5ex}{0ex}
\titleformat{\subsubsection}{\sffamily\itshape}{\thesubsubsection}{1em}{\soSubsubsection{#1}}
\titlespacing{\subsubsection}{0pt}{1.5ex}{0ex}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]{\normalfont\normalsize}{\thesubparagraph}{1em}{}

\title{Minimal Working Example}
\date{}
\author{Author}

\begin{document}
\maketitle

\section{Section 1}
\lipsum[1]

\subsection{Subsection, my friend}
\lipsum[2]

\subsubsection{Subsubsub}
\lipsum[3]

\end{document} 

相关内容