2009-04-04 75 views
17

Cách tạo từ 'phụ lục' xuất hiện trong mục lục? Ngay bây giờ toc trông như thế này:Làm thế nào để làm cho 'phụ lục' xuất hiện trong toc trong Latex?

1 ......
2 ......
.
.
Một .....
B .....

Tôi muốn nó là:

1 ......
2 ..... .
.
.
Phụ lục A .....
Phụ lục B .....

cấu trúc mủ tập tin nguồn của tôi là như thế này:

\ begin {document}
\ tableofcontents
\ include {...}
\ include {...}
\ appendix
\ include {...}
\ include {...}
\ end {document}

+0

thực sự không liên quan đến chương trình, xin lỗi! –

+2

vậy loại câu hỏi latex nào là hợp lệ? – chriss

+7

@Johannes: Tôi không đồng ý. SO đã liên tục xử lý các vấn đề LaTeX như là lập trình liên quan. Điều này là thích hợp, bởi vì TeX và LaTeX là Turing ngôn ngữ hoàn chỉnh. – dmckee

Trả lời

11

Đây có lẽ là cách dễ dàng nhất đạt được bằng cách sử dụng appendix package, hoặc memoir class.

Nếu bạn không muốn sử dụng giải pháp đóng gói sẵn, bạn sẽ phải hack các lệnh chia đoạn. Khi tôi cần làm điều này cho luận án của mình, tôi đã nhân bản lớp report và chỉnh sửa cho đến khi tôi thực hiện phụ nữ lề hạnh phúc. Những gì bạn đang tìm kiếm là định nghĩa của macro \addcontentsline.

+0

Với gói * phụ lục *, có cách nào không sử dụng tùy chọn '[trang] 'cho * phụ lục * môi trường, hoặc không lãng phí toàn bộ trang cho tiêu đề" Phụ lục "không? Vấn đề là khi tôi bỏ qua '[page]' (hoặc '\ appendixpage'), tôi có TOC sai, tức là" Phụ lục "xuất hiện sau" Phụ lục A ". Tôi đoán điều này có liên quan: http://stackoverflow.com/questions/2661774/problem-with-adding-appendix-in-latex – mlt

+0

@mlt Đã quá lâu tôi không thể nhớ lại. – dmckee

10

Có một số cách để giải quyết vấn đề này; Thật không may, tôi chỉ có một hack cho bạn ở giai đoạn này. Một vấn đề là nếu chúng tôi xác định lại số phần "A" để bao gồm từ "Phụ lục", nó sẽ làm hỏng định dạng của bảng nội dung. Vì vậy, thay vào đó, tôi vừa xác định một lệnh phân đoạn mới in phần mà không có số và chèn "Phụ lục X" theo cách thủ công.

Loại xấu xí, nhưng ít nhất nó hoạt động mà không cần phải thay đổi bất kỳ đánh dấu :)

 
\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

Làm cách nào để sử dụng tính năng hack đó bằng '\ asbuk' bằng cách sử dụng' fontspec'? Tôi cần số phụ lục tiếng Nga. – Adobe

+0

Adobe, tôi không thể dán mã ở đây. Tôi đã đăng giải pháp của mình trong câu trả lời riêng. Hy vọng điều này sẽ giúp bạn. –

+0

Sẽ, điều này hoạt động như ma thuật! Tuy nhiên, tôi nhận được một hiệu ứng phụ lạ: các tài liệu tham khảo (nếu bạn thêm chúng) được chuyển thành một phần mới Appndix B *. Bất kỳ ý tưởng làm thế nào để thoát khỏi nó? – Ufos

5

Đối với luận án của tôi, tôi đã làm như sau:

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

tôi tự thêm một dòng vào TOC vì vậy tôi sẽ có "Phụ lục X: ..." hiển thị trong TOC của tôi. Sau đó, tôi loại trừ lệnh phần thực tế khỏi TOC bằng cách sử dụng dấu hoa thị.

1

Gói phụ lục thực sự là giải pháp tốt và đơn giản. Câu trả lời của tôi có thể hữu ích cho những ai muốn thay đổi phong cách đánh số chương, ví dụ, bằng cách sử dụng chữ cái hoặc chữ số La Mã Cyrillic.Phong cách đánh số phụ lục được mã hóa cứng trong lệnh \ @ reset @ pp (Tôi đã xem các nguồn ở đây http://hal.in2p3.fr/docs/00/31/90/21/TEX/appendix.sty). Tôi giải quyết nó bằng cách đơn giản xác định lại lệnh này cho riêng tôi. Chỉ cần thêm mã này vào phần mở đầu của bạn:

\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 

Kết quả là,

Appendix A 
Appendix B 
Appendix C 
... 

sẽ thay đổi để

Appendix A 
Appendix Б 
Appendix В 
... etc 

Tôi không phải là một chuyên gia về cao su, và tôi không thể đảm bảo mã này sẽ không phá vỡ cái gì khác.

0

Dựa trên câu trả lời của @Will Robertson, mã bên dưới xác định điều tương tự nhưng đối với chương và cũng khắc phục sự thật là chapter* không thêm vào tiêu đề khi sử dụng gói fancyhdr.

Với điều này trong tất cả các vấn đề có thể phát hiện được giải quyết.

\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 
Các vấn đề liên quan