章节/小节/… 中的小写字母

章节/小节/… 中的小写字母

我对将章节标题等设置为小写字母感兴趣。但我不知道如何自动实现这一点。

\documentclass{scrartcl}
\setkomafont{sectioning}{\scshape}
\usepackage{hyperref}
\begin{document}
    \section{Hello}
    \section{hello}
    \subsection{helloHello}
\end{document}

但如果我把所有内容都写成小写,那么\tableofcontents除非我也使用小写字母,否则看起来就不太好。我知道,\MakeLowercase{}但这需要争论。

顺便说一句,正如我所说,我只想在文档中以小写字母显示它们,而不是在目录中显示它们,......

有任何想法吗?

PS:我不知道这是否有必要,但我正在使用该MinionPro包。

编辑:经过一些研究,除了这里回答的问题之外,经典论文.sty您可以看看其他不同的(或半不同的)方法。

答案1

在他的主页,KOMA 字体的作者 Markus Kohm 在章节标题中设计了大写字母的代码。

我稍微修改了代码归类于 \section 和 \subsection?

\documentclass[11pt]{scrartcl}

\usepackage[UKenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{MinionPro}
\renewcommand{\scdefault}{ssc} % MinionPro's spaced small caps as standard

\makeatletter
\newcommand*{\Section}{}
\let\Section\section
\renewcommand*{\section}{%
  \@ifstar {\star@section}{\@dblarg\nonstar@section}%
}
\newcommand*{\star@section}[1]{%
  \Section*{\MakeLowercase{#1}}%
}
\newcommand*{\nonstar@section}[2][]{%
  \Section[{#1}]{\MakeLowercase{#2}}%
}
\let\Subsection\subsection
\renewcommand*{\subsection}{%
  \@ifstar {\star@subsection}{\@dblarg\nonstar@subsection}%
}
\newcommand*{\star@subsection}[1]{%
  \Subsection*{\MakeLowercase{#1}}%
}
\newcommand*{\nonstar@subsection}[2][]{%
  \Subsection[{#1}]{\MakeLowercase{#2}}%
}

\setkomafont{disposition}{\normalcolor\scshape}

\usepackage{hyperref}

\begin{document}
\tableofcontents
\section{Heading level 1}
\subsection{Heading level 2}

\end{document}

此解决方案适用于带星号的部分。并且使用常规方法可以轻松添加更多格式:

\setkomafont{level}{command}
\addtokomafont{level}{command}

我还建议您使用以下软件包文本大小写使案件变更更加万无一失:

\usepackage[overload]{textcase}

答案2

这是一个使用titlesec包裹:

\documentclass{scrartcl}
\usepackage[spanish, es-noindentfirst, es-nosectiondot]{babel}
\usepackage[explicit]{titlesec}
\usepackage{textcase}
\usepackage{microtype}
\usepackage[colorlinks]{hyperref}

\titleformat{\section}
  {\normalfont\Large\scshape}{\large\thesection}{0.7em}{\textls{\MakeTextLowercase{#1}}}
\titleformat{\subsection}
  {\normalfont\large\scshape}{\small\thesubsection}{0.7em}  {\textls{\MakeTextLowercase{#1}}}

\begin{document}

\tableofcontents
\section{Una Secci\'on de Prueba}
\subsection{Una Subsecci\'on de Prueba}

\end{document}

在此处输入图片描述

\MakeTextLowercase来自的命令textcase使用包是因为与标准不同\MakeUppercase,它不会改变任何数学的大小写,或者的参数\cite以及\la­bel参数\ref内的命令。

然而,使用这种方法时应谨慎(见KOMA-Script 与 titlesec 之间的不兼容性)。

答案3

下面的补丁似乎可以满足您的要求。它将适用于全部但是,分部单位。

hyperref必须加载补丁已经应用。

\documentclass{scrartcl}
\usepackage[rm=oldstyle]{cfr-lm} % for oldstyle figures
\usepackage{microtype}

\usepackage{xpatch}
\makeatletter
% patch the relevant commands to enclose the section title as argument to a command
\xpatchcmd{\@sect}{#8\@@par}{\lowsmallcaps{#8}\@@par}{}{}
\xpatchcmd{\@ssect}{#5\@@par}{\lowsmallcaps{#5}\@@par}{}{}
\makeatother

% \usepackage{hyperref} % Must go after the patches

\setkomafont{disposition}{\normalfont\scshape} % use small caps for section titles
\setkomafont{sectionentry}{\normalfont} % use normal font in the TOC

% make everything lower case in section titles
\newcommand\lowsmallcaps[1]{\textls{\MakeLowercase{#1}}}

\begin{document}
\tableofcontents
\section{A section With Mixed Case}

\subsection{This is small caps}

\end{document}

在此处输入图片描述


受 Sveinung 的回答启发,另一种方法是重新定义命令;注意不要让其他包重新定义它们,因为这可能会导致冲突。

\documentclass{article}
\usepackage{xparse}
\usepackage{textcase,color}

\ExplSyntaxOn
\NewDocumentCommand{\changesectionalcommand}{mm}
 {
  \cs_new_eq:cN { csc_\cs_to_str:N #1 } #1
  \RenewDocumentCommand{#1}{som}
   {
    \IfBooleanTF{##1}
     {
      \IfValueT{##2}{ \use:c { phantomsection } }
      \use:c { csc_\cs_to_str:N #1 } * { #2 { ##3 } }
      \IfValueT{##2}{ \addcontentsline{toc}{\cs_to_str:N #1}{##2} }
     }
     {
      \IfNoValueTF{##2}
       {
        \use:c { csc_\cs_to_str:N #1 } [ ##3 ] { #2 { ##3 } }
       }
       {
        \use:c { csc_\cs_to_str:N #1 } [ ##2 ] { #2 { ##3 } }
       }
     }
   }
 }

\NewDocumentCommand{\changesectionnumber}{mm}
 {
  \cs_set:cpn { @seccntformat@\cs_to_str:N #1 } { #2 }
 }
\ExplSyntaxOff
\makeatletter
\renewcommand{\@seccntformat}[1]{%
  \@nameuse{@seccntformat@#1}\csname the#1\endcsname\quad}%
}    

\usepackage{hyperref}
\usepackage{lipsum}


\changesectionalcommand{\section}{\MakeTextUppercase}
\changesectionalcommand{\subsection}{\textcolor{red}}

\begin{document}
\tableofcontents

\section{Mixed Case}
\lipsum[2]
\subsection{Red title}
\lipsum[2]

\section[Bar]{Foo}
\lipsum[2]

\section*{Foo foo}
\lipsum[2]

\section*[Bar bar]{Foo foo foo}
\lipsum[2]

\end{document}

此重新定义的一个特点是\section*[<toc entry>]{Title}允许,它将自动执行\addcontentsline指令。当然,人们通常会输入\section*[Title]{Title}

语法是

\changesectionalcommand{\seccommand}{\macro}

其中\macro接收一个参数并且\seccommand是已知的分段命令之一(从\part\subparagraph)。

例如,要使部分内容采用间隔小写字母,可以这样写

\changesectionalcommand{\section}{\lowsmallcaps}
\newcommand{\lowsmallcaps}[1]{\normalfont\scshape\textls{\MakeTextLowercase{#1}}}

(对于\textlsmicrotype是需要的)。

然而,也需要对章节编号的排版方式进行相应的更改,因此定义了一个补充,并且完整的代码也将具有

\changesectionnumber{\section}{\normalfont}

或者章节编号仍将像往常一样以粗体显示。

在此处输入图片描述

答案4

以下是使用该sectsty包的解决方案:

在此处输入图片描述

\documentclass{scrartcl}
\usepackage{sectsty}
\allsectionsfont{\mdseries\scshape\lowercase}
\usepackage[colorlinks=true]{hyperref}
\begin{document}
\tableofcontents
\section{Hello}
\section{Anyone Home?}
\subsection{Hello Hello}
\end{document}

请注意,KOMA-Script 文档中关于列出节级标题(无衬线字体,粗体)和子节级标题(衬线字体,非粗体)的默认设置均被保留。如果我理解您的规范,这就是您想要的。

相关内容