我用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 上下文中几乎等效。
letterspacing
for选项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}
似乎是您所追求的那种东西:
\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}