隐藏 \thechapter 以获得未编号的章节

隐藏 \thechapter 以获得未编号的章节

我想在标题下方的右侧显示章节编号。我想到了以下最小工作示例:

\documentclass{article}
\usepackage{titlesec}
\usepackage{marginnote}
\usepackage{lipsum} % for dummy text only
\titleformat{\section}[block]{\LARGE\selectfont}{}{0em}{}[\marginnote{\Huge\thesection}]

\begin{document}
    \section{First section with\\linebreak}
        \lipsum[2]
    \section*{Unnumbered}
        \lipsum[12]
    \section{Three}
        \lipsum[5]
\end{document}

但是未编号部分现在编号为 1。我如何才能抑制\thesection未编号部分?当我将移动\marginnote到数字<label>中的字段时\titleformat,会“忽略”标题包含换行符并且相对于第一行定位。

编辑:例如,这是我为本章编写的代码。使用您的解决方案(无需任何操作即可运行)时\if,我收到错误“ \begin{document} missing”。

\titleformat{\chapter}[block]{\fontsize{40}{10}}{}{0em}{#1}[
    \begin{textblock}{2}(13.7,3.2)
        \color[rgb]{0.39453,0.48047,0.511719}   % Error Happens Here
        \thechapter
    \end{textblock}
]

当我在块周围添加 \if 时,错误就消失了。

\titleformat{\chapter}[block]{\fontsize{40}{10}}{}{0em}{#1}[
    \iftrue{
        \begin{textblock}{2}(13.7,3.2)
            \color[rgb]{0.39453,0.48047,0.511719}   % No Error Happens with if
            \thechapter
        \end{textblock}
    }
    \fi
]

答案1

我会选择一种语义上更清晰的解决方案。titlesec提供为无数部分指定不同样式的选项。

复制您的原始命令,指定numberless,删除您不想显示的内容(如章节编号),您就完成了!

\usepackage[explicit]{titlesec}
% Regular sections:
\titleformat{\section}[block]{\LARGE\selectfont}{}{0em}{}[\marginnote{\Huge\thesection}]
% ...etc

% Numberless sections:
\titleformat{name=\section,numberless}[block]{\LARGE\selectfont}{}{0em}{#1}
% ...etc

答案2

您可以测试*版本是否正在使用

\makeatletter
\titleformat{\section}[block]{\LARGE\selectfont}{}{0em}{}[\if\ttl@key@numberless\marginnote{\Huge\thesection}\fi]
\makeatother

//对于 \ttl@key@numberless编号形式,\if因为相同的字符出现两次,所以为真,而/*对于未编号部分,所以\if比较/*为假。

相关内容