从 suftesi 迁移到 memoir:各部分采用 parcenter 样式

从 suftesi 迁移到 memoir:各部分采用 parcenter 样式

我正在将文档从suftesi类迁移到memoir(由于打印尺寸问题)。我只剩下一个问题:我需要复制各部分parcenter的样式suftesi,可能无需加载包titlesec(对我来说似乎有点过头了)。此外,我使用 LuaLaTeX,因此必须排除特定于 XeLaTeX 的解决方案。

了解以下信息可能也会有所帮助:我已修改“标准”分段,使其始终增加分段编号(即使对于带星号的命令也是如此),但不会在带星号的版本中打印分段名称(与普通带星号的命令相反)。我也包括了此代码。

以下是我的想法:

\documentclass[a4paper,showtrims, twoside, italian, openright,10pt]{memoir}
\usepackage{xparse}
\makeatletter

\let\@nt@ni\section

\RenewDocumentCommand{\section}{som}{%
    \IfBooleanTF{#1}{%
        \refstepcounter{section}%
        \@nt@ni*{\thesection}
    }{%
    \IfValueTF{#2}{%
        \@nt@ni[#2]{#3}%
    }{%
        \@nt@ni{#3}}}%  
}
\usepackage{microtype}
\usepackage{lipsum}
\setsecheadstyle{\scshape\centering}
\begin{document}
\chapter{a}
\section{Text}
\lipsum[1]
\end{document}

结果如下(请不要介意字体):

在此处输入图片描述

这是通过以下方式获得的目标结果\documentclass[documentstructure=book,secstyle=parcenter,style=smallcaps8]{suftesi}(请不要介意字体或文本,只介意格式)

在此处输入图片描述

编辑总结一下我想要的:小写部分标题,居中但一行以下章节编号。

答案1

这是一个可能的解决方案:

\documentclass[a4paper,showtrims, twoside, italian, openright,10pt]{memoir}
\usepackage{xparse}

\let\memoirsection\section

\RenewDocumentCommand{\section}{sO{#4}O{#4}m}{%
  \begingroup
  \IfBooleanTF{#1}{%
     \refstepcounter{section}%
     \memoirsection*{\thesection}%
  }{%
    \memoirsection[#2][#3]{#4}%
   }%
  \endgroup
}
\usepackage{microtype}
\usepackage{lipsum}

\setsecheadstyle{\twolinecenter}
\setsecindent{0pt}
\setsechook{%
  \setsecnumformat{\csname the##1\endcsname\par}%
  \sethangfrom{\noindent##1}%
}
\newcommand{\twolinecenter}[1]{%
  \hbox{\parbox[t]{\textwidth}{\scshape\centering#1}}%
}

\begin{document}

\chapter{a}
\section{Text}
\lipsum[2]

\end{document}

在此处输入图片描述

请注意,与文档所memoir暗示的相反,钩子中的\setsecnumformat声明\sethangfrom不是局部于所述节级,但会影响所有其他节级。这就是重新定义\begingroup和的原因,我使其与 的两个可选参数兼容。\endgroup\sectionmemoir

答案2

在此处输入图片描述

似乎在回忆录中你只需要

\setsecnumformat{\csname the#1\endcsname}
\sethangfrom{#1\par}

完整文件:

\documentclass[a4paper,showtrims, twoside, italian, openright,10pt]{memoir}
\usepackage{xparse}
\makeatletter

\let\@nt@ni\section

\RenewDocumentCommand{\section}{som}{%
    \IfBooleanTF{#1}{%
        \refstepcounter{section}%
        \@nt@ni*{\thesection}
    }{%
    \IfValueTF{#2}{%
        \@nt@ni[#2]{#3}%
    }{%
        \@nt@ni{#3}}}%  
}

\setsecnumformat{\csname the#1\endcsname}
\sethangfrom{#1\par}

\usepackage{microtype}
\usepackage{lipsum}
\setsecheadstyle{\scshape\centering}
\begin{document}
\chapter{a}
\section{Text}
\lipsum[1]
\end{document}

相关内容