无论计数器的宽度如何,段落左边距的固定缩进(第二部分)

无论计数器的宽度如何,段落左边距的固定缩进(第二部分)

上个月我问过问题,我得到的答复基本解决了我遇到的问题,但是我注意到答案有一个小问题(少量错位),这是我的 MWE:

\documentclass[letter, 12pt]{article}

\usepackage{titlesec}
\newcounter{globalparagraph}
\titleformat{\section}[hang]{\bfseries}{\makebox[0.75in][l]{\thesection}}{0pt}{}
\titleformat{\subsection}[hang]{\itshape}{\makebox[0.75in][l]{\textup{\thesubsection}}}{0pt}{}
  \titleformat{\paragraph}[runin]{\normalfont\normalsize}{%
  \refstepcounter{globalparagraph}%
  \sbox0{[0]}\makebox[\dimexpr0.75in-\wd0][l]{\theparagraph}}{0pt}{}
\setcounter{secnumdepth}{4}
\renewcommand{\thesection}{\Roman{section}.}
\renewcommand{\thesubsection}{\Alph{subsection}.}
\renewcommand{\theparagraph}{[\arabic{globalparagraph}]}

\begin{document}
\section{ONE}
\subsection{SubSection}
\paragraph{} \textit{Subsection}
\end{document}

输出:

输出

如您所见,段落的开头与章节和小节标题不完全对齐。我认为框的尺寸需要进一步调整,但我不知道该调整什么。

答案1

使用斜体使得判断对齐变得困难,因此我添加了\rules。

\documentclass[letter, 12pt]{article}

\usepackage{titlesec}
\newcounter{globalparagraph}
\titleformat{\section}[hang]{\bfseries}{\makebox[0.75in][l]{\thesection}}{0pt}{}
\titleformat{\subsection}[hang]{\itshape}{\makebox[0.75in][l]{\textup{\thesubsection}}}{0pt}{}
  \titleformat{\paragraph}[runin]{\normalfont\normalsize}{%
  \refstepcounter{globalparagraph}%
  \makebox[\dimexpr 0.75in-1em][l]{\theparagraph}}{0pt}{}
\setcounter{secnumdepth}{4}
\renewcommand{\thesection}{\Roman{section}.}
\renewcommand{\thesubsection}{\Alph{subsection}.}
\renewcommand{\theparagraph}{[\arabic{globalparagraph}]}

\begin{document}
\section{\rule{0.5pt}{\ht\strutbox}ONE}
\subsection{\rule{0.5pt}{\ht\strutbox}SubSection}
\paragraph{\unskip}\rule{0.5pt}{\ht\strutbox}\textit{Subsection}
\end{document}

答案2

OP 提到了两个问题:

  1. A和的对齐[1],和

  2. SubSection和的对齐Subsection

第 1 期

下面的 MWE 在代码中演示了分段后的问题 1,问题不是出在方法上,而是出在字体上。我不会称其为问题,因为字体设计者有理由这样设置边界框。但实际情况是,紧靠在A其边界框的左侧,而留下[了一个小间隙。

节下方的排版显示了 和 的相同水平偏移A[就像 OP 在节中显示的那样。此问题的一个可能的“修复”是在排版 时将括号向左调整\paragraph,如下所示1pt

\titleformat{\paragraph}[runin]{\normalfont\normalsize}{%
  \refstepcounter{globalparagraph}%
  \sbox0{[0]}\makebox[\dimexpr0.75in-\wd0][l]{%
  \kern-1pt% <-- THIS CHANGE HERE SHIFTS [ LEFTWARD
  \theparagraph}}{0pt}{}

第 2 期

titlesec我不完全理解问题 2 的原因。但是,我倾向于相信第二个问题与手册中的一条注释有关:“排版材料在垂直模式下具有悬挂、块和显示;在水平模式下具有运行“。

我运行了一些设置.75in规则的测试,发现垂直模式\section和的\subsection制表符实际上比的要多.75in,而水平模式的\paragraph制表符正好是的.75in。因此特别指定\section我提供的“修复”是将 的开头和 的\subsection起始文本左移-.6pt。我是这样实现的:

\titleformat{\section}[hang]{\bfseries}{%
  \makebox[0.75in][l]{\thesection}}%
  {-.6pt}% <-- SHIFTS SUBSECTION ENTRY LEFT
  {}
\titleformat{\subsection}[hang]{\itshape}{\makebox[0.75in][l]%
  {\textup{\thesubsection}}}{-.6pt}% <-- SHIFTS SECTION ENTRY LEFT
  {}

以下是最终的 MWE:

\documentclass[letter, 12pt]{article}

\usepackage{titlesec,xcolor}
\newcounter{globalparagraph}
\titleformat{\section}[hang]{\bfseries}{%
  \makebox[0.75in][l]{\thesection}}%
  {-.6pt}% <-- SHIFTS SUBSECTION ENTRY LEFT
  {}
\titleformat{\subsection}[hang]{\itshape}{\makebox[0.75in][l]%
  {\textup{\thesubsection}}}{-.6pt}% <-- SHIFTS SECTION ENTRY LEFT
  {}
\titleformat{\paragraph}[runin]{\normalfont\normalsize}{%
  \refstepcounter{globalparagraph}%
  \sbox0{[0]}\makebox[\dimexpr0.75in-\wd0][l]{%
  \kern-1pt% <-- THIS CHANGE HERE SHIFTS [ LEFTWARD
  \theparagraph}}{0pt}{}
\setcounter{secnumdepth}{4}
\renewcommand{\thesection}{\Roman{section}.}
\renewcommand{\thesubsection}{\Alph{subsection}.}
\renewcommand{\theparagraph}{[\arabic{globalparagraph}]}
\begin{document}
\section{ONE}
\subsection{SubSection}
\paragraph{}\textit{Subsection}

\noindent\rule{.75in}{3pt}

A

[

\fboxsep=0pt
\fboxrule=.1pt
\fbox{A}

\fbox{[}
\end{document}

在此处输入图片描述

相关内容