EDITAR

EDITAR

Estou trabalhando em um documento longo com muitos capítulos, usando a classe report.

Gostaria de ter três versões diferentes de determinados títulos de seção (longo para documento, médio para sumário e abreviado para cabeçalho). Estou usando package fancyhdr, então segui as instruções de uma maneira legalPerguntas frequentes(também fornecido nesta pergunta:Como usar o título curto da subseção no cabeçalho, mas não no índice?).

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

(Acredito que a ideia é que o título interno sectionmarkcuide da página em que a seção começa, e o título externo cuide das páginas subsequentes.)

Tudo isso funcionou bem. No entanto, como meu documento tem espaço duplo, eu também costumava titlesecreduzir alguns espaços em branco ao redor dos títulos dos capítulos e seções.

Agora recebo o cabeçalho TOC_title na página em que a seção começa (errado) e, em seguida, o cabeçalho Header_title (correto) nas páginas subsequentes. Obviamente eu gostaria de consertar isso.

Suspeito que fancyhdrseja uma má ideia a longo prazo e devo mudar para outro pacote de cabeçalho, mas não quero mexer no documento atual. Também não quero desistir titlesecagora porque realmente ajudou muito com os espaços em branco com espaço duplo, e o problema que estou tendo é menor em comparação.

Existe uma maneira de corrigir isso usando titlesec? Eu tentei ler odocumentaçãomas estou ficando muito confuso. Ficaria muito grato se alguém que já conhece este pacote fizesse uma sugestão.

Esta pergunta já foi feita antes emComo coloco um título curto no cabeçalho, mas um título longo no toc (conflito do pacote titlesec com a marca de seção)?. Mas a única resposta sugere o script KOMA; Suspeito que esta seja alguma outra família de pacotes que não irei aprender agora.

Permitam-me acrescentar também que a minha dissertação está prevista para amanhã, por isso não terei tempo para montar um pequeno exemplo de trabalho hoje. Estou interessado em resolver esta questão hoje e no longo prazo, para que possa voltar e fazer isso mais tarde, se necessário. Mas enquanto isso, eu apreciaria muito qualquer resposta hoje!

ATUALIZAÇÃO (1º de maio de 2015): Aqui está um exemplo mínimo de trabalho. O cabeçalho do Ponysec em sua primeira página está correto se \usepackage{titlesec} estiver comentado e não de outra forma. O cabeçalho Carouselsec usa o minihack de Ulrike Fischer e funciona de qualquer maneira.

\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}

Se a solução certa (para mim, que realmente não sei o que KOMA/KONA/script significa e ainda quer criar documentos tipográficos decentes hoje, esta semana, este mês, apesar desta enorme ignorância) for usar titlepsem vez de fancyhdr, eu ainda usaria adoraria descobrir como fazer isso.

Responder1

Você pode tentar algo assim para enganar o titlesec:

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

EDITAR

Algumas observações sobre os comentários: Você não forneceu um exemplo mínimo, então a maior parte foi adivinhação. O titlesec chama internamente \sectionmark{TOCtitle}tão cedo que seus próprios \sectionmarkcomandos chegam tarde demais. Portanto, estou redefinindo \sectionmarkpara nada, para que o titlesec não possa mais definir uma marca e usar uma cópia \orisectionmarkpara definir suas marcas. Substituindo o meio \orisectionmarkpor \sectionmarkdeverianãowork - afinal o comando está definido para não fazer nada.

Não sei por que você não deseja usar as classes KONA, mas uma solução com o titlesec envolveria descartar o fancyhdr e usar o titleps. Tenho certeza de que Javier implementou em algum lugar uma maneira de definir as marcas corretamente, mas como você já descobriu, suas documentações não são fáceis de ler e encontrar algo que funcione geralmente envolve muitas tentativas e erros e leitura do código.

Responder2

Usando o script KOMA, não haveria problema :-)

\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}

annaTocHeadTitles

informação relacionada