KOMA-Script 和前缀行为

KOMA-Script 和前缀行为

我正在 Lyx 中准备我的文档(Koma-script 报告类)。

如果我使用 \KOMAoptions{headings=onelinechapter},则该章节没有前缀

如果没有它,MWE 将生成包含两行章节前缀 + 标题的文件。

 \documentclass[fontsize=13pt]{scrreprt}
\usepackage{fontspec}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\RequirePackage{fix-cm}
\usepackage{fontspec}
\setmainfont{Cambria}
\usepackage[english, russian]{babel}
%\usepackage[fontsize=13pt]{scrextend}
\usepackage {setspace}
\onehalfspacing
\usepackage[a4paper, left=2.5cm, right=1cm, top=2cm, nohead]{geometry}


\addtokomafont{disposition}{\rmfamily}
\KOMAoption{chapterprefix}{true}
\KOMAoptions{headings=onelinechapter}

\setkomafont{chapter}{\MakeUppercase}
\setkomafont{chapter}{\rmfamily\mdseries}
\setkomafont{section}{\rmfamily\mdseries}

\usepackage{mathtext}
%\usepackage[backend=biber, style=gost-numeric, bibencoding=utf8, sorting=none, language=auto]{biblatex}
%\usepackage{multirow}
%\usepackage{longtable}

\ifpdf\usepackage{graphicx}\else\usepackage{graphicx}\fi

\usepackage{comment}

%\ifpdf\usepackage{epstopdf}\usepackage{pdfpages}\fi

\graphicspath{{fig/}}

\renewcommand{\appendixfont}{\normalsize\bfseries}

\setcounter{tocdepth}{2}

\makeatother

\usepackage[style=gost-numeric,backend=biber, style=gost-numeric, bibencoding=utf8, sorting=none, language=auto]{biblatex}

\begin{document}
\tableofcontents 
\clearpage

\chapter*{{\large{}Введение}}   
\addcontentsline{toc}{chapter}{Введение}

\chapter{\textsc{\large{}Литературный обзор}}

\vspace{40pt}   
\section{{\normalsize{}один}}  
\section{{\normalsize{}два}}

\chapter{\textsc{\large{}Технология приготовления }}  
\vspace{40pt}

\section{{\normalsize{}один}}
\section{еще}

\chapter*{{\large{}Литература}}
\end{document}

我想保留前缀,但在同一行并且后面也有一个点。

类似于“第 1 部分。第 1 部分”

这是怎么做到的?我相信\chapterlineswithprefixformat 应该以某种方式使用命令,但不确定。

答案1

您的代码中有几件事您不应该做,例如,将字体大小命令添加到\chapter和的参数中\section。KOMA-Script 提供了一个用户界面,可以干净地更改字体。请使用它。

使用 LuaLaTeX 和 XeLaTeX 时,包fix-cm没有意义。fontspec默认字体已经是 Latin Modern 的 OTF 版本。fix-cm适用于旧版欧洲计算机现代和旧版计算机现代。因此它只对 PDFLaTeX 有意义。

注意:\MakeUppercase不是 KOMA-Script 意义上的字体切换命令。因此您不应将其用作 的参数\setkomafont。请参阅KOMA-Script 手册有关 的更多信息\setkomafont。 在您的情况下\setkomafont{chapter}{\MakeUppercase}完全没用,因为下一个\setkomfont{chapter}{…}会覆盖并因此停用 的使用\MakeUppercase

您不应多次加载软件包。我知道,如果选项相同(即使选项不同,某些软件包也可以),加载软件包是可行的,但下次更改选项或使用软件包时,加载软件包可能会失败。所以不要这样做。

不要使用随机\makeatletter\makeatother仅在需要的地方使用它们。

另外,您不应\vspace{…}在标题后使用。KOMA-Script 提供了一个用户界面来更改标题前后的间距。请使用它。

为了改变标题数字的格式,KOMA-Script 提供了诸如 等命令\chapterformat\sectionformat因此,我认为更好的(且最小化的)代码应该是:

\documentclass[fontsize=13pt,headings=nochapterprefix]{scrreprt}
\usepackage{fontspec}
\usepackage{libertine}%\setmainfont{Cambria}% Sorry, Cambria is not a font of TeX Live. Please reactivate the font yourself
\usepackage[english, russian]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[a4paper, left=2.5cm, right=1cm, top=2cm, nohead]{geometry}

\addtokomafont{disposition}{\rmfamily}
\renewcommand*{\chapterformat}{\chapapp~\thechapter.\enskip}% or maybe
                                % \autodot instead of the hard coded "."

\setkomafont{sectioning}{}% don't use \sffamily\bfseries
%\setkomafont{chapter}{\MakeUppercase}% \MakeUppercase is not a font command
                                % and does not really make sense, when using \scshape
\setkomafont{chapter}{\large}% change size
\setkomafont{section}{\normalsize}% change size

\RedeclareSectionCommand[afterskip=74pt plus 2.25pt minus 3.75pt]{chapter}% increase space after chapter

\begin{document}
\tableofcontents 

\addchap{Введение}

\addtokomafont{chapter}{\scshape}% Why not already in the preamble and
                                % therefor also for the \addchap chapter?
\chapter{Литературный обзор}

\section{один}
\section{два}

\chapter{Технология приготовления}

\section{один}
\section{еще}

\chapter*{Литература}
\end{document}

在此处输入图片描述

如果你真的想要\MakeUppercase,你可以添加类似以下内容:

\renewcommand{\chapterlinesformat}[3]{%
  \MakeUppercase{#2#3}%
}

或者

\renewcommand{\chapterlinesformat}[3]{%
  #2\MakeUppercase{#3}%
}

或者

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
  \@hangfrom{\MakeUppercase{#2}{\MakeUppercase{#3}}%
}
\makeatother

或者

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
  \@hangfrom{#2}{\MakeUppercase{#3}}%
}
\makeatother

文件序言。

如果您还想将章节前缀添加到页眉中的章节条目(例如,页面样式)headings,请\chaptermarkformat参阅KOMA-Script 手册

相关内容