편집하다

편집하다

나는 보고서 클래스를 사용하여 여러 장으로 구성된 긴 문서를 작업하고 있습니다.

특정 섹션 제목에 대해 세 가지 다른 버전(문서의 경우 긴 버전, TOC의 경우 중간 버전, 헤더의 경우 짧은 버전)을 갖고 싶습니다. 나는 package 를 사용하고 fancyhdr있으므로 좋은 지침을 따랐습니다.자주하는 질문(이 질문에도 나와 있습니다.머리글에는 짧은 하위 섹션 제목을 사용하고 목차에는 사용하지 않는 방법은 무엇입니까?).

\section[TOC_title]{Full_title\sectionmark{Header_title}}
\sectionmark{Header_title}

(내 생각에는 내부 제목이 sectionmark섹션이 시작되는 페이지를 관리하고 외부 제목이 다음 페이지를 처리한다는 아이디어가 있다고 생각합니다.)

이 모든 것이 잘 작동했습니다. 그러나 내 문서가 이중 간격으로 되어 있기 때문에 titlesec장과 섹션 제목 주위의 공백을 줄이곤 했습니다.

이제 섹션이 시작되는 페이지에서 TOC_title 헤더를 얻었고(잘못된) 후속 페이지에서는 Header_title 헤더를 얻었습니다. 분명히 나는 ​​이 문제를 고치고 싶습니다.

fancyhdr나는 그것이 장기적으로 나쁜 생각이라고 생각 하고 다른 헤더 패키지로 전환해야 하지만 현재 문서를 엉망으로 만들고 싶지 않습니다. 또한 titlesec이중 공백 공백에 대해 많은 도움이 되었고 제가 겪고 있는 문제는 그에 비해 사소하기 때문에 지금 당장 포기하고 싶지 않습니다 .

를 사용하여 이 문제를 해결할 수 있는 방법이 있습니까 titlesec? 나는선적 서류 비치하지만 나는 매우 혼란스러워지고 있습니다. 이 패키지를 이미 알고 있는 분이 제안해 주시면 매우 감사하겠습니다.

이 질문은 이전에 요청되었습니다.헤더에는 짧은 제목을 넣고 목차에는 긴 제목을 어떻게 넣나요(titlesec 패키지와 sectionmark의 충돌)?. 그러나 유일한 대답은 KOMA 스크립트를 제안합니다. 나는 이것이 지금 당장 배우지 않을 다른 패키지 제품군이라고 생각합니다.

또한 제 논문이 내일 마감이라는 점을 덧붙이고 싶습니다. 그래서 오늘은 작은 실제 사례를 정리할 시간이 없을 것입니다. 저는 이 문제를 오늘은 물론 장기적으로 해결하는 데 관심이 있으므로 필요한 경우 나중에 다시 돌아와서 이 작업을 수행할 수 있습니다. 하지만 그동안 오늘 어떤 답변이라도 주시면 감사하겠습니다!

업데이트(2015년 5월 1일): 다음은 최소한의 작업 예입니다. 첫 번째 페이지의 Ponysec 헤더는 \usepackage{titlesec}이 주석 처리되어 있으면 정확하고 그렇지 않으면 그렇지 않습니다. Carouselsec 헤더는 Ulrike Fischer의 minihack을 사용하며 어느 쪽이든 작동합니다.

\documentclass{report}
\usepackage{fancyhdr}
\usepackage{titlesec}
\newcommand{\funnysection}[3]
     {\let\orisectionmark\sectionmark
     \renewcommand\sectionmark[1]{}%
     \section[{#2}]{{#1}\orisectionmark{{#3}}}
     \orisectionmark{{#3}}
     \let\sectionmark\orisectionmark}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% BEGIN DOCUMENT    %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\tableofcontents
\pagestyle{fancy}

\chapter{Mychapter}
\section{Cactussec (UNIVERSION)}
No header on this page.
\clearpage
\section[Ponysec (TOC)]{Ponysec (main)\sectionmark{Ponysec (header)}}
\sectionmark{Ponysec (header)} 
Desired header here is "Ponysec (header)".
\clearpage
Desired header here is "Ponysec (header)".
\clearpage
\funnysection{Carouselsec (main)}{Carouselsec (TOC)}{Carouselsec (header)}
Desired header here is "Carouselsec (header)".
\clearpage
Desired header here is "Carouselsec (header)".
\end{document}

올바른 솔루션(KOMA/KONA/스크립트가 무엇을 의미하는지 잘 모르지만 엄청난 무지에도 불구하고 오늘, 이번 주, 이번 달에 괜찮은 조판 문서를 만들고 싶은 나에게)이 titleps대신 사용하는 것이라면 fancyhdr, 나는 여전히 그 방법을 알고 싶습니다.

답변1

titlesec을 속이기 위해 다음과 같은 것을 시도할 수 있습니다:

\let\orisectionmark\sectionmark
\renewcommand\sectionmark[1]{}%
\section[TOCtitle]{Fulltitle\orisectionmark{Headertitle}}
\orisectionmark{Headertitle}
\let\sectionmark\orisectionmark

편집하다

의견에 관한 몇 가지 참고 사항: 최소한의 예를 제공하지 않았으므로 대부분이 추측이었습니다. titlesec은 내부적으로 \sectionmark{TOCtitle}너무 일찍 호출하여 사용자 \sectionmark명령이 너무 늦었습니다. 그래서 \sectionmarktitlesec이 더 이상 표시를 설정할 수 없고 복사본을 사용하여 \orisectionmark표시를 설정할 수 없도록 아무것도 아닌 것으로 다시 정의합니다 . 중간을 should \orisectionmark로 바꾸기\sectionmark~ 아니다작업 - 결국 명령은 아무것도 하지 않도록 정의되었습니다.

왜 KONA 클래스를 사용하고 싶지 않은지 모르겠지만 titlesec을 사용하는 솔루션에는 fancyhdr을 삭제하고 대신 titleps를 사용하는 것이 포함됩니다. 나는 Javier가 표시를 올바르게 설정하는 방법을 어딘가에 구현했다고 확신합니다. 그러나 이미 그의 문서를 읽기가 쉽지 않으며 작동하는 것을 찾는 데는 많은 시행 착오와 코드 읽기가 필요하다는 것을 이미 알고 있습니다.

답변2

KOMA 스크립트를 사용하면 문제가 없습니다 :-)

\documentclass[headings=optiontoheadandtoc]{scrartcl}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\section[tocentry={platypus dancing till morning},%
head={dancing platypus}]%
{The platypus went on dancing till the mornig sun rose
over the hills}
\blindtext[5]
\end{document}

annaToc머리제목

관련 정보