Re: ヘッダーに現れるセクション名は?

名前: 本田
日時: 2007-02-18 15:37:45
IPアドレス: 220.147.90.*

>>47029 >Section name for TOC の方が現れることも起きるようです. 現象が現われるサンプルがないと追試できないのですが・・・・ 要は,目次・ヘッダ・本文が異なるようにするということなので こういう手もあります. \DeclareRobustCommand{\nameHeadOrToc}{Section Name for Header} {\def\nameHeadOrToc{Section Name for Toc} \tableofcontents} ...... \section[\nameHeadOrToc]{Section name} つまり,tocファイルには \nameHeadOrToc の状態のまま 吐き出すようにしておいて,\tableofcontentsの処理時にだけ \nameHeadOrToc をtoc用の文字列にします. 本文の処理時は,本文のヘッダ用の文字列になるように あらかじめ定義しておきます. 他のアプローチとしては 目次用のオプション・ヘッダ用のオプションと オプションを追加する方法が考えられます. \section[TOC]<heaer>{main} のような記述を許可するように書き換えるというわけです. \section{main} は \section[main]<main>{main} \section[TOC]{main} は \section[TOC]<header>{main} となるようにしました.ただし, \section<header>{main}というタイプには対応していません. 以下のコードで \@xxxtriplearg で更に分岐をすれば簡単に対応可能ですが, 仕様をどうすべきか曖昧なのと, \section[TOC]<header>{main}で対応できるので割愛しました. \documentclass{jarticle} \pagestyle{headings} \makeatletter \long\def\@triplearg#1{% \kernel@ifnextchar[{\@xtriplearg{#1}}% {\@xxxtriplearg{#1}}% } \long\def\@xtriplearg#1[#2]{% \kernel@ifnextchar<{#1[{#2}]}% {\@xxtriplearg{#1}{#2}} } \long\def\@xxtriplearg#1#2#3{% #1[{#2}]<{#2}>{#3}% }% \long\def\@xxxtriplearg#1#2{#1[{#2}]<{#2}>{#2}} \def\@startsection#1#2#3#4#5#6{% \if@noskipsec \leavevmode \fi \par \@tempskipa #4\relax \@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@triplearg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%%書き換えた } \def\@sect#1#2#3#4#5#6[#7]<#8>#9{% \ifnum #2>\c@secnumdepth \let\@svsec\@empty \else \refstepcounter{#1}% \protected@edef\@svsec{\@seccntformat{#1}\relax}% \fi \@tempskipa #5\relax \ifdim \@tempskipa>\z@ \begingroup #6{% \@hangfrom{\hskip #3\relax\@svsec}% \interlinepenalty \@M #9\@@par}%%%書き換えた \endgroup \csname #1mark\endcsname{#8}%%%書き換えた \addcontentsline{toc}{#1}{% \ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}% \fi #7}% \else \def\@svsechd{% #6{\hskip #3\relax \@svsec #9}%%%書き換えた \csname #1mark\endcsname{#7}% \addcontentsline{toc}{#1}{% \ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}% \fi #7}}% \fi \@xsect{#5}} \def\@xsect#1{% \@tempskipa #1\relax \ifdim \@tempskipa>\z@ \par \nobreak \vskip \@tempskipa \@afterheading \else \@nobreakfalse \global\@noskipsectrue \everypar{% \if@noskipsec \global\@noskipsecfalse {\setbox\z@\lastbox}% \clubpenalty\@M \begingroup \@svsechd \endgroup \unskip \@tempskipa #1\relax \hskip -\@tempskipa \else \clubpenalty \@clubpenalty \everypar{}% \fi}% \fi \ignorespaces} \def\@seccntformat#1{\csname the#1\endcsname\quad} \def\@ssect#1#2#3#4#5{% \@tempskipa #3\relax \ifdim \@tempskipa>\z@ \begingroup #4{% \@hangfrom{\hskip #1}% \interlinepenalty \@M #5\@@par}% \endgroup \else \def\@svsechd{#4{\hskip #1\relax #5}}% \fi \@xsect{#3}} \makeatother \begin{document} \tableofcontents \section{hogehoge} あああああああああああああああ \section[Section for TOC]<Section for Header>{Section name} いいいいいいいい \clearpage いいいいいいいい \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)