나는 출판된 책의 각 장 끝에 문제에 대한 해결 매뉴얼을 작성하고 있습니다. 이를 위해서는 목차에 나열된 번호가 없는 섹션이 필요하며, 번호가 없는 각 섹션의 제목이 정확히 Problem xx.yy
어디에 xx
있는지 \thechapter
및 yy
is 가 필요합니다 \thesection
.
문서 클래스를 사용하여 book
다음과 같이 수행했습니다.
\section*{Problem~\thesection}\addcontentsline{toc}{section}{Problem~\thesection}\addtocounter{section}{1}
내 질문은 어떻게 새로운 섹션 명령을 정의하거나 재정의할 수 있느냐 \section
는 것 입니다 \section*
. 그러면 각 문제에 대해 모든 것을 다시 작성할 필요가 없습니다. 100개 이상의 문제가 있습니다!
여기 MWE가 있습니다
\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
\tableofcontents
\chapter{Introductory Problems}\addtocounter{section}{1}
\section*{Problem~\thesection}\addcontentsline{toc}{section} {Problem~\thesection}\addtocounter{section}{1}
Here is bla bla bla the solution to bla bla bla.
\end{document}
하지만 목차에서 섹션 번호 인쇄를 억제하여 대신 사용할 수 있도록 하는 방법이 있을 수 있으므로 \section{}
등 \section*{}
이 필요하지 않습니다 \addtocounter
. 더 깔끔한 솔루션이 될 것입니다. 하지만 TOC에서 섹션 번호 인쇄를 억제하는 방법을 모르겠습니다 ???
답변1
문제에 대한 자체 카운터를 할당하고 반복적인 작업은 매크로에 묻어두기만 하면 됩니다.
\documentclass[11pt,letterpaper]{book}
\newcommand\problem{%
\refstepcounter{problem}%
\section*{Problem \theproblem}%
\addcontentsline{toc}{section}{Problem \theproblem}%
}
\newcounter{problem}[chapter]
\renewcommand{\theproblem}{\thechapter.\arabic{problem}}
\begin{document}
\tableofcontents
\chapter{Introductory Problems}
\problem
Here is bla bla bla the solution to bla bla bla.
\problem
Here is bla bla bla the solution to bla bla bla.
\chapter{Harder Problems}
\problem
Here is bla bla bla the solution to bla bla bla.
\problem
Here is bla bla bla the solution to bla bla bla.
\end{document}
답변2
섹션 카운터가 인쇄되는 방법을 재정의하면 됩니다 \thecounter
.
\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}
그러나 이렇게만 하면 "문제 1.1" 레이블이 목차의 섹션 이름과 충돌합니다. 목차에 섹션을 표시하지 않으려면 다음을 사용하십시오.
\setcounter{tocdepth}{0}
원하는 경우 충돌 문제를 해결하는 한 가지 방법은 다음을 사용하는 것입니다.토클로프트패키지:
\documentclass{book}
\usepackage{tocloft}
\setcounter{tocdepth}{2}
\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}
\settowidth\cftsecnumwidth{Problem 8.88}
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{First problem, chapter one}
\section{Second problem, chapter one}
\chapter{Second chapter}
\section{First problem, chapter two}
\section{Second problem, chapter two}
\end{document}
사용토클로프트변수는 \cftsecnumwidth
"숫자" 섹션을 조판하기 위해 남겨진 공간의 양을 제어합니다.
출력은 다음과 같습니다.
답변3
으로 그렇게 할 수 있습니다 titlesec/titletoc
. 다음은 코드입니다. problem
선택적 인수(문제 제목)를 사용하여 명령을 정의합니다 . 번호가 없는 섹션도 있을 수 있습니다.
\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{lipsum}
\titleformat{name=\section,numberless}[hang]{\large\bfseries}{}{0pt}{\addcontentsline{toc}{section}{#1}}
\titleformat{\section}[hang]{\large\bfseries}{Problem~\thesection}{1em}{}
\newcommand\problem[1][]{\section{#1}}
\titlecontents{section}[1.5em]{\smallskip}%
{Problem~\thecontentslabel~}%numbered
{}%numberless\
{\hfill\quad\contentspage}[\smallskip]%
\begin{document}
\tableofcontents
\chapter{Introductory Problems}%
\problem
\lipsum[1-3]
\problem
\lipsum[4-6]
Here is bla bla bla the solution to bla bla bla.
\problem[(the marriage lemma)]
Here is bla bla bla the solution to bla bla bla.
\section*{A numberless section}%
\lipsum[7-9]
\end{document}