我目前正在写一本书,我希望某些章节能够清楚地标记为“困难”或“可选”。不仅是章节,还有练习(我正在使用exercise
包)和定理(我用newtheorem
来自amsthm
))。如果能适用于任意分段级别、环境等,那就太好了……
编辑:我想我还应该说——我想要一些像在边缘、靠近章节/定理/等等的地方加一个星号的东西,而且,如果它是一个章节或一个部分,那么在文本前面应该有一个星号和目录:
1 Introduction
1.1 blah
2.3 blah
2 Some Chapter
2.1 blah
* 2.2 this is an optional section
2.3 blah blah
编辑:如果能放置星星(或者可配置的符号)就好了前章节编号。
答案1
这标题目录手册介绍了一种有趣的方法来实现您想要的功能。最好通过示例来说明。
\documentclass[11pt,a4paper,english]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[pagestyles,raggedright]{titlesec}
\usepackage{titletoc}
\usepackage{blindtext}
\title{A document with stuff for advanced or optional reading}
\author{Jay}
\newcommand{\secmark}{}
\newcommand{\marktotoc}[1]{\renewcommand{\secmark}{#1}}
\newenvironment{advanced}{
\renewcommand{\secmark}{*}%
\addtocontents{toc}{\protect\marktotoc{*}}
}
{\addtocontents{toc}{\protect\marktotoc{}}}
\titleformat{\section}{\normalfont\Large}{\makebox[1.5em][l]{\llap{\secmark}\thesection}}{0.4em}{}
\titlecontents{section}[3.7em]{}{\contentslabel[\llap{\secmark}\thecontentslabel]{2.3em}}{\hspace*{-2.3em}}{\titlerule*{}\bfseries\contentspage}
\newpagestyle{front}{%
\headrule
\sethead[\thepage][][\subsectiontitle]{\sectiontitle}{}{\thepage}
\setfoot[][][]{}{}{}
}
\newpagestyle{main}{%
\headrule
\sethead[\thepage][][\thesubsection\quad\subsectiontitle]{\llap{\secmark}\thesection\quad\sectiontitle}{}{\thepage}
\setfoot[][][]{}{}{}
}
\newpagestyle{back}{%
\headrule
\sethead[\thepage][][\subsectiontitle]{\sectiontitle}{}{\thepage}
\setfoot[][][]{}{}{}
}
\begin{document}
\frontmatter
\pagestyle{front}
\maketitle
\tableofcontents\newpage
\mainmatter
\pagestyle{main}
\blinddocument
\begin{advanced}
\blinddocument
\end{advanced}
\blinddocument
\backmatter
\appendix
\pagestyle{back}
\end{document}
此示例从标记章节中的选定部分开始。对于标记的章节,需要进行相应的修改。
与往常一样,盲文该包仅用于创建虚拟文本,因此不是解决方案的一部分。
答案2
我对部分没有答案,但对环境有答案。它允许您标记您想要特别标记的环境。
\documentclass{article}
\usepackage{ifthen}
\usepackage{xargs}
\usepackage{lipsum}
\setlength{\parindent}{0mm}
\newcounter{problem}
\newcommand{\trickysymbol}{$\clubsuit$ }
\newlength{\trickysymbollength}
\settowidth{\trickysymbollength}{\trickysymbol}
\newenvironmentx{problem}[2][1={},2={},usedefault]{%
\refstepcounter{problem}%
\ifthenelse{\equal{#2}{}}%
{%
% if no second argument
\ifthenelse{\equal{#1}{}}%
{%
\textbf{Problem \theproblem }\par%
}%
{%
\textbf{Problem \theproblem \, (#1) }\par%
}%
}%
{%
% tricky problems
\ifthenelse{\equal{#2}{tricky}}%
{%
\ifthenelse{\equal{#1}{}}%
{%
\hspace{-\trickysymbollength}\trickysymbol\textbf{Problem \theproblem }\par%
}%
{%
\hspace{-\trickysymbollength}\trickysymbol\textbf{Problem \theproblem \, (#1) }\par%
}%
}{ \textbf{Problem} \theproblem \, (#1) {\bf\huge\color{red}tricky?}\par}%
}%
\ignorespaces%
}%
{%
\par\noindent\ignorespacesafterend
}%
\begin{document}
\begin{problem}[description goes here]
\lipsum[1]
\end{problem}
\begin{problem}[description goes here][tricky]
\lipsum[1]
\end{problem}
\begin{problem}[][tricky]
\lipsum[1]
\end{problem}
\end{document}
答案3
我不会在部分中使用符号,我会定义一个命令。
例子:
\documentclass[11pt]{scrartcl}
%\Section with capital S for important sections
\newcommand{\Section}[1]{\section[! #1]{(Important) #1}}
%\newcommand{\Section}[1]{\section[#1\hfill!]{(Important) #1}}
\begin{document}
\tableofcontents
\section{First section}
\Section{Second section}
Your text goes here.
\end{document}
您可以使用 ImportantSection 或 OptionalSection...而不是 Section ...这样您就可以得到清晰的标记。
修改后的示例带有可选参数:
\documentclass[11pt]{scrartcl}
\usepackage{color}
\definecolor{optionalgray}{gray}{.75}
\makeatletter
\newcommand\@ImportantSection[2][]{
%Define the look of Important sections
\section[#1 (!)]{(*) #2}
%\section[#1 (!)]{\textcolor{red}{#2}}
}
\newcommand\ImportantSection{\@dblarg\@ImportantSection}
\newcommand\@OptionalSection[2][]{
%Define the look of Optional sections
\section[#1 (!)]{(#2)}
%\section[#1 (!)]{\textcolor{optionalgray}{#2}}
}
\newcommand\OptionalSection{\@dblarg\@OptionalSection}
\makeatother
\begin{document}
\tableofcontents
\section{First section}
\ImportantSection{Second section}
\ImportantSection[3rd]{Third section}
\OptionalSection[4th]{Fourth section}
\end{document}
答案4
至于在目录中添加星号,这可能会有所帮助(只要它是编号的,在这种情况下数字部分的 with 是\@tempdima
)
\documentclass[a4paper]{article}
\usepackage{etoolbox}
\newtoggle{activestar}
\makeatletter
\DeclareRobustCommand\mystar{%
\iftoggle{activestar}{%
\llap{$*$\kern0.2em\kern\@tempdima}%
}{}%
\ignorespaces
}
\makeatother
\begin{document}
\toggletrue{activestar}
\tableofcontents
\togglefalse{activestar}
\section{\mystar{}Test}
\section{Test}
\end{document}
当然,建议定义一个\specialsection
或类似的东西,正如其他人提到的。
至于文中的标记,如果作者使用边注来指出这是特殊的,可能会对读者更有帮助。