我正在尝试使用 titleclass 定义两个新类:savoir 和 subsavoir。
在目录中,我希望得到如下内容:
- Savoir 1 -- 第一个知识标题
- Savoir 1.a——第一个知识的第一个“子知识”。
我有:
- Savoir 1 -- 第一个知识标题
- Savoir a——第一个知识的第一个“子知识”。
它缺乏1.在知识1.a
这是一个最小的例子:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usepackage[rightlabels]{titletoc}
\titlecontents{savoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bf Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\titlecontents{subsavoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bf Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\contentsfinish
\makeatletter
\renewcommand\@pnumwidth{0em}
\makeatother
\titleclass{\savoir}{straight}[\section]
\titleclass{\subsavoir}{straight}[\savoir]
\newcounter{savoir}
\newcounter{subsavoir}[savoir]
\renewcommand{\thesavoir}{\arabic{savoir}}
\renewcommand{\thesubsavoir}{\alph{subsavoir}}
\titleformat{\savoir}[hang]{\large\sf}{Savoir \thesavoir}{0.7em}{#1}
\titlespacing{\savoir}{0pt}{10pt}{5pt}
\titleformat{\subsavoir}{\large\sf}{Savoir \thesavoir\,\thesubsavoir}{0.7em} {#1}
\titlespacing{\subsavoir}{0pt}{10pt}{5pt}
\begin{document}
\renewcommand{\contentsname}{Liste des savoirs}
\tableofcontents
\savoir{Premier savoir}
\lipsum[1]
\subsavoir{premier sous-savoir}
\lipsum[2]
\end{document}
谢谢
答案1
习惯上,我们根据编号方案来定义层次结构。也就是说,\thesubsection
包括部分\thesection
;\thesection
包括部分\thechapter
;等等。在您的例子中,您使用了两种不同的方法来表示分区编号。请更正这些以使其统一:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usepackage[rightlabels]{titletoc}
\titlecontents{savoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bfseries Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\titlecontents{subsavoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bfseries Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\contentsfinish
\makeatletter
\renewcommand\@pnumwidth{0em}
\makeatother
\titleclass{\savoir}{straight}[\section]
\titleclass{\subsavoir}{straight}[\savoir]
\newcounter{savoir}
\newcounter{subsavoir}[savoir]
\renewcommand{\thesavoir}{\arabic{savoir}}
\renewcommand{\thesubsavoir}{\thesavoir.\alph{subsavoir}}
\titleformat{\savoir}[hang]{\large\sffamily}{Savoir \thesavoir}{0.7em}{#1}
\titlespacing{\savoir}{0pt}{10pt}{5pt}
%\titleformat{\subsavoir}{\large\sffamily}{Savoir \thesubsavoir}{0.7em}{#1}
\titleformat{\subsavoir}{\large\sffamily}{Savoir \thesavoir\,\alph{subsavoir}}{0.7em}{#1}
\titlespacing{\subsavoir}{0pt}{10pt}{5pt}
\begin{document}
\renewcommand{\contentsname}{Liste des savoirs}
\tableofcontents
\savoir{Premier savoir}
\lipsum[1]
\subsavoir{premier sous-savoir}
\lipsum[2]
\end{document}
上面我注释掉了\subsavoir
标题格式应该使用。
答案2
尝试这样做
\renewcommand{\thesubsavoir}{\thesavoir.\alph{subsavoir}}
\titleformat{\subsavoir}{\large\sf}{Savoir \thesubsavoir}{0.7em} {#1}
完整代码
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usepackage[rightlabels]{titletoc}
\titlecontents{savoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bf Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\titlecontents{subsavoir}[0pt]{\addvspace{2pt\filright}}
{\contentspush{\bf Savoir \thecontentslabel\ --\ }}
{}{\titlerule*[0.8em]{.}\thecontentspage}
\contentsfinish
\makeatletter
\renewcommand\@pnumwidth{0em}
\makeatother
\titleclass{\savoir}{straight}[\section]
\titleclass{\subsavoir}{straight}[\savoir]
\newcounter{savoir}
\newcounter{subsavoir}[savoir]
\renewcommand{\thesavoir}{\arabic{savoir}}
\renewcommand{\thesubsavoir}{\thesavoir.\alph{subsavoir}}
\titleformat{\savoir}[hang]{\large\sf}{Savoir \thesavoir}{0.7em}{#1}
\titlespacing{\savoir}{0pt}{10pt}{5pt}
\titleformat{\subsavoir}{\large\sf}{Savoir \thesubsavoir}{0.7em} {#1}
\titlespacing{\subsavoir}{0pt}{10pt}{5pt}
\begin{document}
\renewcommand{\contentsname}{Liste des savoirs}
\tableofcontents
\savoir{Premier savoir}
\lipsum[1]
\subsavoir{premier sous-savoir}
\lipsum[2]
\end{document}