이 결과를 얻으려면 섹션을 재정의하는 방법은 무엇입니까?

이 결과를 얻으려면 섹션을 재정의하는 방법은 무엇입니까?

나는 출판된 책의 각 장 끝에 문제에 대한 해결 매뉴얼을 작성하고 있습니다. 이를 위해서는 목차에 나열된 번호가 없는 섹션이 필요하며, 번호가 없는 각 섹션의 제목이 정확히 Problem xx.yy어디에 xx있는지 \thechapteryyis 가 필요합니다 \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} 

여기에 이미지 설명을 입력하세요

관련 정보