2009-04-04 18 views
17

Jak wprowadzić słowo "dodatek" w spisie treści? Teraz toc wygląda następująco:Jak zrobić "dodatek" w Latexie?

1 ......
2 ......
.
.
.....
B .....

to, że jak to być:

1 ......
2 ..... .
.
.
Dodatek A .....
Dodatek B .....

Moja struktura pliku źródłowego lateks jest tak:

\ begin {document}
\ TableOfContents
\ include {...}
\ include {...}
\ dodatek
\ include {...}
\ include {...}
\ end {document}

+0

To naprawdę nie jest związane z programowaniem, przepraszam! –

+2

, więc jakie pytania lateksowe są ważne? – chriss

+7

@Johannes: Nie zgadzam się. SO konsekwentnie traktował problemy LaTeX jako związane z programowaniem. Jest to odpowiednie, ponieważ TeX i LaTeX są językami pełnymi Turinga. – dmckee

Odpowiedz

11

Jest to prawdopodobnie najbardziej łatwo osiągnąć za pomocą appendix package, lub memoir class.

Jeśli nie chcesz używać rozwiązania w opakowaniu jednostkowym, musisz zhakować polecenia podziału na . Kiedy musiałem to zrobić dla mojej pracy doktorskiej , sklonowałem klasę report i edytowałem, aż zrobiłem damę z marginesami szczęśliwymi. To, czego szukasz, to definicja makra \addcontentsline.

+0

Z * dodatkiem * pakietem, czy istnieje sposób, aby nie używać opcji '[strona]' dla * załączników * środowiska, czy nie marnować całej strony tylko na tytuł "Załączników"? Problem polega na tym, że kiedy pomijam '[strona]' (lub '\ appendixpage'), mam TOC pomieszany, tzn." Dodatki "pojawiają się po" Dodatku A ". Sądzę, że to jest istotne: http://stackoverflow.com/questions/2661774/problem-with-adding-appendix-in-latex – mlt

+0

@mlt To było tak długie, że nie pamiętam. – dmckee

10

Istnieje kilka sposobów rozwiązania tego problemu; niestety, na tym etapie mam tylko dla ciebie hack. Jednym z problemów jest to, że jeśli przedefiniujemy numer sekcji "A", aby dołączyć słowo "Dodatek", spowoduje to formatowanie spisu treści. Zamiast tego właśnie zdefiniowałem nowe polecenie dzielenia, które wypisuje sekcję bez numeru i ręcznie wstawia "Załącznik X".

Rodzaju brzydki, ale przynajmniej działa bez konieczności zmiany żadnych znaczników :)

 
\documentclass{article} 

\makeatletter 
\newcommand\[email protected][1]{% 
    \refstepcounter{section}% 
    \[email protected]*{Appendix \@Alph\[email protected]: #1}% 
    \addcontentsline{toc}{section}{Appendix \@Alph\[email protected]: #1}% 
} 
\let\[email protected]\section 
\[email protected]@macro\appendix{\let\section\[email protected]} 
\makeatother 

\begin{document} 

\tableofcontents 

\section{goo} 
\label{a} 
This is sec~\ref{a} 

\section{har} 
\label{b} 
This is sec~\ref{b} 

\appendix 
\section{ji} 
\label{c} 
This is app~\ref{c} 
\subsection{me} 
does this look right? 

\end{document} 
+0

Jak używać tego hackowania z '\ asbuk' przy użyciu' fontspec'? Potrzebne są rosyjskie numery katalogowe. – Adobe

+0

Adobe, nie mogę wkleić kodu tutaj. Wysłałem swoje rozwiązanie w osobnej odpowiedzi. Mam nadzieję, że to ci pomoże. –

+0

Czy to działa jak magia! Jednak dostaję dziwny efekt uboczny: odniesienia (jeśli je dodasz) są przekształcane w nową sekcję Appendix B *. Masz pomysł, jak się go pozbyć? – Ufos

5

Dla mojej tezy, zrobiłem co następuje:

\appendix 
\addcontentsline{toc}{section}{Appendix~\ref{app:scripts}: Training Scripts} 
\section*{Sample Training Scripts 
\label{app:scripts} 
Blah blah appendix content blah blah blah. 

ręcznie dodaje linię do TOC, więc będę miał "Dodatek X: ..." pojawi się w moim spisie treści. Następnie wykluczyłem rzeczywistą komendę sekcji z spisu treści za pomocą gwiazdki.

1

Dodatek to naprawdę dobre i proste rozwiązanie. Moja odpowiedź może być pomocna dla osób, które chcą zmienić styl numeracji rozdziałów, na przykład za pomocą cyrylicy lub cyfr rzymskich.Styl numerowania załączników jest zakodowany na stałe w poleceniu \ @ resetach @ pp (szukałem w źródłach tutaj http://hal.in2p3.fr/docs/00/31/90/21/TEX/appendix.sty). Rozwiązałem to poprzez proste przedefiniowanie tego polecenia na moje własne. Wystarczy dodać ten kod do preambuły:

\makeatletter 

    \renewcommand{\@[email protected]}{\par 
     \@ppsavesec 
     \stepcounter{@pps} 
     \setcounter{section}{0} 

     \[email protected]@pp 
      \setcounter{chapter}{0} 
      \renewcommand\@chapapp{\appendixname} 
      \gdef\thechapter{\Asbuk{chapter}} % changed 
     \else 
      \setcounter{subsection}{0} 
      \gdef\thechapter{\Asbuk{section}} % changed 
     \fi 

     \[email protected] 
      \[email protected]@pp 
       \renewcommand{\theHchapter}{\[email protected]\Asbuk{chapter}} % changed 
      \else 
       \renewcommand{\theHsection}{\[email protected]\Asbuk{section}} % changed 
      \fi 

      \def\[email protected]{\appendixname}% 
     \fi 
    \restoreapp 
} 

\makeatother 

W rezultacie

Appendix A 
Appendix B 
Appendix C 
... 

zmieni się

Appendix A 
Appendix Б 
Appendix В 
... etc 

Nie jestem ekspertem lateks, i nie mogę zagwarantować, ten kod nie złamie czegoś innego.

0

Na podstawie odpowiedzi @Will Robertson, poniższy kod definiuje to samo, ale dla rozdziału, a także naprawia fakt, że chapter* nie dodaje się do nagłówka podczas korzystania z pakietu fancyhdr.

Dzięki temu w ustawieniach wszystkie problemy zostały rozwiązane.

\makeatletter 
\newcommand\[email protected][1]{% 
    \refstepcounter{chapter}% 
    \def\[email protected]{Appendix \@Alph\[email protected]: #1} 
    \[email protected]*{\[email protected]}% 
    \markboth{\MakeUppercase{\[email protected]}}{\MakeUppercase{\[email protected]}} 
    \addcontentsline{toc}{chapter}{\[email protected]}% 
} 
\let\[email protected]\chapter 
\[email protected]@macro\appendix{\let\chapter\[email protected]} 
\makeatother