
Я исправил проблему, но не знаю, почему это работает. Пожалуйста, смотрите комментарий в конце для последующего вопроса.
Я нашел несколько похожих вопросов, но ни один из них не выстраивается в линию (или не работает). Однако, если это ошибка моего Google-fu, просто дайте ссылку на соответствующий вопрос, пожалуйста.
Я пытаюсь написать руководство, которое включает FAQ в конце. Самым естественным способом, который я придумал для FAQ, было бы использовать пакет hyperref и minitoc, чтобы люди могли прочитать вопрос и щелкнуть на ответ. К сожалению, это загромождает верхнюю таблицу содержания руководства всеми вопросами FAQ. Должен быть способ скрыть вопросы FAQ в таблице содержания, но по-прежнему показывать их в minitoc. Я попробовал команду \addstarredsection
в документации пакета minitoc, но я даже не могу заставить ее правильно скомпилироваться, не говоря уже о том, чтобы сделать то, что я хочу. Есть какие-нибудь предложения?
MWE (включая все пакеты, которые я собираюсь использовать на данный момент):
\documentclass{article}
\usepackage{hyperref}
\hypersetup{% % Setup the coloring of the links.
% % Currently the only necessary one is "colorlinks=true" and "linkcolor=blue".
colorlinks = true, % Colours links instead of ugly boxes
urlcolor = blue, % Colour for external hyperlinks
linkcolor = blue, % Colour of internal links
citecolor = blue % Colour of citations, could be ``red''
}
\usepackage[
margin=1in,% All 4 margins need to be one inch.
paperheight=11in,% We want 11in tall paper.
paperwidth=8.5in% And 8.5in wide paper.
]{geometry}% Geometry package is the easiest way to deal with margins.
\usepackage{fancyhdr}
\usepackage{indentfirst}
\pagestyle{fancy}
\usepackage{titlesec}% Use this for the actual header styling
\usepackage{titletoc}% Use this to manipulate Table of Contents styling
\usepackage{minitoc}% To form a miniture table of contents for the FAQ.
\title{A guide to Stuff}
\author{Me}
\date{}
\begin{document}
\maketitle
\newpage
\section*{Introduction}
\newpage
\doparttoc\tableofcontents
\newpage
\part{Part 1}
\newpage
\section{Subsection of Part 1}
\newpage
\section{Second Subsection of Part 1}
\newpage
\part{Part 2}
\newpage
\section{Subsection of Part 2}
\newpage
\section{Second Subsection of Part 2}
\newpage
\part{FAQ}
% Every section (or subsection) below this should appear in the minitoc but NOT the main table of contents. Bonus points for being able to show *only* sections and not subsections, although this should simply be a matter of setting the toc depth in theory.
\parttoc
\section*{Question One}
%\addstarredsection{Question One}
Q1
\section{Question Two}
Q2
\subsection{Subquestion of Question Two}
SubQ1
\subsection{Another subquestion of Question Two}
SubQ2
\section{Question Three}
Q3
\end{document}
В качестве сноски, я хотел использовать пакеты titletoc и titlesec по другим причинам, и я видел несколько сообщений о том, как использовать titletoc, чтобы получить minitoc без использования пакета minitoc. Я также пробовал эти предложения, но не смог скомпилировать ни один из предложенных ответов; даже копирование/вставка ответов в ветках в качестве лакмусовой бумажки. Справедливости ради, эти сообщения, похоже, были очень старыми, поэтому я предполагаю, что это проблема с обновлениями LaTeX и/или пакета titletoc. Я также отказался от попыток на раннем этапе, поскольку знал, что minitoc уже делает более или менее то, что мне нужно, и я хотел узнать, как использовать minitoc лучше в любом случае.
Редактировать:
Я исправил проблему, вставив \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
сразу после \part{FAQ}
строки. Я знаю, что это устанавливает глубину toc, чтобы больше не противодействовать разделу (или ниже) для таблицы содержания, поэтому я ожидал бы (и это правда), что верхняя таблица содержания не будет иметь ничего после части FAQ
.
В чем я не уверен, так это в том, почему minitoc все еще правильно заполняет все разделы, когда эти разделы не отображаются в верхней таблице содержания. Если tocdepth не влияет на minitoc, то что влияет? Я думал, что minitoc анализирует файл, .toc
чтобы получить его содержимое, поэтому все, чего нет в toc, будет иметь проблемы с тем, чтобы быть в minitoc... но, по-видимому, это не так. Кто-нибудь может дать представление о том, что здесь происходит?
решение1
Вот способ, основанный на посте:
\documentclass{article}
\usepackage{hyperref}
\hypersetup{% % Setup the coloring of the links.
% % Currently the only necessary one is "colorlinks=true" and "linkcolor=blue".
colorlinks = true, % Colours links instead of ugly boxes
urlcolor = blue, % Colour for external hyperlinks
linkcolor = blue, % Colour of internal links
citecolor = blue % Colour of citations, could be ``red''
}
\usepackage[
margin=1in,% All 4 margins need to be one inch.
paperheight=11in,% We want 11in tall paper.
paperwidth=8.5in% And 8.5in wide paper.
]{geometry}% Geometry package is the easiest way to deal with margins.
\usepackage{fancyhdr}
\usepackage{indentfirst}
\pagestyle{fancy}
%\usepackage{titlesec}% Use this for the actual header styling
%\usepackage{titletoc}% Use this to manipulate Table of Contents styling
\usepackage{minitoc}% To form a miniture table of contents for the FAQ.
%koleygr: ADDED CODE
\usepackage{pgffor}
%\newcounter{mychapter}
%\renewcommand\thepart{\Alph{part}}
%\newcommand\thechapter{\thepart.\arabic{mychapter}}
%\renewcommand\thesection{\thechapter.\arabic{section}}
%\renewcommand\thesubsection{\thesection.\arabic{subsection}}
\let\oldpart\part
%\def\part#1{\oldpart{#1}\setcounter{mychapter}{0}\refstepcounter{mychapter}}
\let\oldsection\section
\let\oldsubsection\subsection
%\let\olldchapter\chapter
%\def\oldchapter{\stepcounter{mychapter}\olldchapter}
\makeatletter
\newcounter{mysection}
\newcounter{mysubsection}
\def\section{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}
\def\@StarredWith[#1]#2{%
\oldsection*{#2}\refstepcounter{mysection}\label{Sec:\arabic{mysection}}%
}
\def\@StarredWithout#1{
\oldsection*{#1}\refstepcounter{mysection}\label{Sec:\arabic{mysection}}%
}
\def\@nonStarred{%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldsection[#1]{#2}\refstepcounter{mysection}\label{Sec:\arabic{mysection}}%
}
\def\@nonStarredWithout#1{%
\oldsection{#1}\refstepcounter{mysection}\label{Sec:\arabic{mysection}}%
}
\def\subsection{%
\@ifstar{\@StarredS}{\@nonStarredS}%
}
\def\@StarredS{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredSWith}%
{\@StarredSWithout}%
}
\def\@StarredSWith[#1]#2{%
\oldsubsection*{#2}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@StarredSWithout#1{%
\oldsubsection*{#1}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@nonStarredS{%
\@ifnextchar[%
{\@nonStarredSWith}%
{\@nonStarredSWithout}%
}
\def\@nonStarredSWith[#1]#2{%
\oldsubsection[#1]{#2}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@nonStarredSWithout#1{%
\oldsubsection{#1}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
%\MakeRobust{\ref}
\newcommand{\labeltext}[2]{%
\immediate\write\@auxout{%
\string\newlabel{#2}{{1}{\thepage}{\unexpanded{#1}}{#2}{}}%
}%
}
\newcommand\stopTOC{%
\def\section{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}
\def\@StarredWith[##1]##2{%
\oldsection*{##2}\refstepcounter{mysection}\labeltext{##2}{Sec:\arabic{mysection}}%
}
\def\@StarredWithout##1{
\oldsection*{##1}\refstepcounter{mysection}\labeltext{##1}{Sec:\arabic{mysection}}%
}
\def\@nonStarred{%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[##1]##2{%
\oldsection*{\arabic{section}\hspace{1em}{##2}}\refstepcounter{mysection}\labeltext{\refstepcounter{section}\arabic{section}\hspace{1em}##2}{Sec:\arabic{mysection}}%
}
\def\@nonStarredWithout##1{%
\oldsection*{\arabic{section}\hspace{1em}{##1}}\refstepcounter{mysection}\labeltext{\refstepcounter{section}\arabic{section}\hspace{1em}##1}{Sec:\arabic{mysection}}%
}
\def\subsection{%
\@ifstar{\@StarredS}{\@nonStarredS}%
}
\def\@StarredS{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredSWith}%
{\@StarredSWithout}%
}
\def\@StarredSWith[##1]##2{%
\oldsubsection*{##2}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@StarredSWithout##1{%
\oldsubsection*{##1}\refstepcounter{mysubsection}\label{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@nonStarredS{%
\@ifnextchar[%
{\@nonStarredSWith}%
{\@nonStarredSWithout}%
}
\def\@nonStarredSWith[##1]##2{%
\oldsubsection*{\arabic{section}.\arabic{subsection}\hspace{1em}##2}\refstepcounter{mysubsection}\labeltext{\refstepcounter{subsection}\arabic{section}.\arabic{subsection}\hspace{1em}##2}{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
\def\@nonStarredSWithout##1{%
\oldsubsection*{\arabic{section}.\arabic{subsection}\hspace{1em}##1}\refstepcounter{mysubsection}\labeltext{\refstepcounter{subsection}\arabic{section}.\arabic{subsection}\hspace{1em}##1}{SubSec:\arabic{mysection}:\arabic{mysubsection}}%
}
}
%SectionBreakDown
\newcounter{secc}
\newcounter{ssecc}
\newcounter{tssecc}
\xdef\OverC{0}
\newcommand\SBD[2][1,-1]{%
\xdef\OverC{0}%
\def\Continued\empty%
\def\ToBeContinued{-1}%
\foreach \opt[count=\ll from 1] in {#1}{%
\ifnum\ll=1
\xdef\Continued{\opt}%
\else
\xdef\ToBeContinued{\opt}%
\fi
}%
\ifx\ToBeContinued\empty
\xdef\ToBeContinued{-1}%
\fi
\ifx\Continued\empty
\xdef\Continued{1}%
\fi
%
%\section{Section breakdown}
\ifnum\Continued>0
\else
\noindent{\large\bfseries Contents}%
\noindent\rule{\textwidth}{2pt}\vspace{0.5cm}
\setcounter{secc}{0}%
\setcounter{ssecc}{0}%
\setcounter{tssecc}{0}%
\fi
%
{\noindent #2}\par
%
%
\ifnum\ToBeContinued<0
\def\ContinueUntil{100}%
\else
\def\ContinueUntil{\ToBeContinued}%
\fi
%
\foreach \mk in {\Continued,...,\ContinueUntil}{%
\@ifundefined{r@Sec:\mk}{%
\breakforeach%
}{%
\setcounter{secc}{\mk}%
\ifnum\mk<0
\breakforeach%
\else
\ifnum\mk>\ContinueUntil
\\\breakforeach%
\else
\noindent{\bfseries{\nameref{Sec:\mk}\dotfill\pageref{Sec:\mk}}\\[1.2ex]}
\foreach \ml in {1,...,100}{%
\@ifundefined{r@SubSec:\mk:\ml}{%
\breakforeach%
}{%
\setcounter{ssecc}{\ml}%
\stepcounter{tssecc}%
\ifnum\mk>0
\hspace{0.3cm}\parbox[t]{\textwidth}{\setlength{\baselineskip}{4pt}\nameref{SubSec:\mk:\ml}\dotfill\pageref{SubSec:\mk:\ml}\\[0.9ex]}\\
\fi
}%
}%
\fi
\fi
}%
}
%\begin{enumerate}[label={\arabic{enumi}.},itemsep=0pt]
%\foreach \i in {#3,...,#4}
%{\item \nameref{\thechapter:\i}}
%\end{enumerate}
\ifnum\ToBeContinued>0
\relax%
\else
\vspace{-0.cm}
\par
\noindent\rule{\textwidth}{2pt}
\fi
}
\makeatother
%koleygr: END ADDED CODE
\title{A guide to Stuff}
\author{Me}
\date{}
\begin{document}
\maketitle
\newpage
\section*{Introduction}
\newpage
\doparttoc\tableofcontents
\newpage
\part{Part 1}
\newpage
\section{Subsection of Part 1}
\newpage
\section{Second Subsection of Part 1}
\newpage
\part{Part 2}
\newpage
\section{Subsection of Part 2}
\newpage
\section{Second Subsection of Part 2}
\newpage
\part{FAQ}
\stopTOC
\SBD[0,1]{}
\SBD[7,-1]{}
%\parttoc
\section*{Question One}
%\addstarredsection{Question One}
Q1
\section{Question Two}
Q2
\subsection{Subquestion of Question Two}
SubQ1
\subsection{Another subquestion of Question Two}
SubQ2
\section{Question Three}
Q3
\end{document}
Содержание:
ЧАСТЬ 3: