이것이 내가 만든 방법입니다:
\begin{filecontents*}{Idx.ist}
headings_flag 1
heading_prefix "{\\hrulefill \n \n \\textbf{"
heading_suffix "}} \\nopagebreak"
delim_0 "\n\n \\item "
group_skip "\n\n \\hrulefill"
\end{filecontents*}
\documentclass[8.5pt twoside, a4paper]{book}
\let\cleardoublepage\clearpage
\usepackage[T1]{fontenc}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[scaled]{uarial}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{imakeidx}
\usepackage{hyperref}
\makeindex[options=-s Idx.ist]
\makeatletter
\let\mygobble\@gobble
\LetLtxMacro\OldIndex\index
\renewcommand{\index}[1]{\OldIndex{#1|mygobble}}
\makeatother
\begin{document}
\chapter{Test}
Irgendein Text.
\section{Eins}
Blablabla.
\subsection{Regeln}
\index{Ausland}
\index{Sieger}
\index{Spieler}
\index{Spielfeld}
\subsection{Beschäftigung}
\index{Beruf}
\index{Arbeit}
\vfill
\pagebreak
\addcontentsline{toc}{section}{\textbf{Stichwortverzeichnis}}
\renewcommand{\indexname}{Stichwortverzeichnis}
\fontsize{7.5pt}{0pt}
\printindex
\end{document}
편집: 섹션 번호 매기기와 끝에 줄이 있는 것이 잘 작동했습니다! 감사해요!
그러나 들여쓰기가 작동하지 않습니다. \struntbox
작동하지 않습니다..
Edit2.0: 인덱스가 더 있으면 알파벳 문자 "그룹" 내에 열 나누기가 있습니다. 이것을 어떻게 피할 수 있습니까?
세 번째 편집: 그룹 뒤에 추가 행/줄이 필요하다는 것을 방금 깨달았습니다. 이와 같이:
그러한 행/라인을 어떻게 추가할 수 있나요?
답변1
색인에 페이지 번호를 추가하려면 재정의하여 페이지 번호를 제거하지 마세요 \index
. 다음 정의 를 일부 변경 Idx.ist
하고 추가하여 형식을 지정할 수 있습니다.
\RequirePackage{filecontents}
\begin{filecontents*}{Idx.ist}
headings_flag 1
heading_prefix "\\indexheading{"
heading_suffix "}"
delim_0 "\\hfill"
group_skip "\n"
preamble "\\begin{theindex}\\starttheindex"
postamble "\n\\stoptheindex\\end{theindex}"
\end{filecontents*}
\documentclass[8.5pt,% book does not know this option (but don't forget the comma!)
twoside,% this is default
openany,% so usually you do not need \let\cleardoublepage\clearpage
a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} % use new spelling instead of old
\usepackage[utf8]{inputenc}
%\usepackage[scaled]{uarial}% uarial is a very ugly mix of Arial and Helvetica
\renewcommand{\familydefault}{\sfdefault}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{imakeidx}
\usepackage{hyperref}
\makeindex[options=-s Idx.ist]
% If you do not want page numbers but, e.g. subsection numbers in the index:
%\LetLtxMacro\OldIndex\index
%\newcommand*{\indexpage}[2]{#1}
%\renewcommand{\index}[1]{\OldIndex{#1|indexpage{\thesubsection}}}
\newcommand*{\indexheading}[1]{%
\indexrule
\textbf{#1}\par
\nopagebreak
\vskip-\baselineskip% go back to the heading line
}
\newcommand*{\indexrule}{%
\par\nopagebreak
\vskip-\ht\strutbox
\hrulefill\par\pagebreak[3]
\vskip -\baselineskip
\hrulefill\par\nobreak
}
\newcommand*{\starttheindex}{\raggedcolumns}
\newcommand*{\stoptheindex}{\indexrule}
\makeatletter
\renewcommand*{\@idxitem}{\par\hangindent 2em\hskip 1.5em}% indent the entry
\makeatother
\begin{document}
\chapter{Test}
Irgendein Text.
\section{Eins}
Blablabla.
\subsection{Regeln}
\index{Ausland}
\index{Sieger}
\index{Spieler}
\index{Spielfeld}
\subsection{Beschäftigung}
\index{Beruf}
\index{Arbeit}
\vfill
\clearpage% should be used before \addcontentsline
\addcontentsline{toc}{chapter}{Stichwortverzeichnis}% the index is a chapter and becomes the font for chapter entries that is already bold
\renewcommand{\indexname}{Stichwortverzeichnis}
\fontsize{7.5pt}{0pt}
\printindex
\end{document}
%
앞에 있는 것을 제거하면
\LetLtxMacro\OldIndex\index
\newcommand*{\indexpage}[2]{#1}
\renewcommand{\index}[1]{\OldIndex{#1|indexpage{\thesubsection}}}
당신은 얻을 것이다:
그룹 내에서 열 나누기를 방지하려면 다음 \nopagebreak
정의에 추가 항목을 추가할 수 있습니다 \@idxitem
.
\RequirePackage{filecontents}
\begin{filecontents*}{Idx.ist}
headings_flag 1
heading_prefix "\\indexheading{"
heading_suffix "}"
delim_0 "\\hfill"
group_skip "\n"
preamble "\\begin{theindex}\\starttheindex"
postamble "\n\\stoptheindex\\end{theindex}"
\end{filecontents*}
\documentclass[8.5pt,% book does not know this option (but don't forget the comma!)
twoside,% this is default
openany,% so usually you do not need \let\cleardoublepage\clearpage
a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} % use new spelling instead of old
\usepackage[utf8]{inputenc}
%\usepackage[scaled]{uarial}% uarial is a very ugly mix of Arial and Helvetica
\renewcommand{\familydefault}{\sfdefault}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{imakeidx}
\usepackage{hyperref}
\makeindex[options=-s Idx.ist]
% If you do not want page numbers but, e.g. subsection numbers in the index:
%\LetLtxMacro\OldIndex\index
%\newcommand*{\indexpage}[2]{#1}
%\renewcommand{\index}[1]{\OldIndex{#1|indexpage{\thesubsection}}}
\newcommand*{\indexheading}[1]{%
\indexrule
\textbf{#1}\par
\nopagebreak
\vskip-\baselineskip% go back to the heading line
}
\newcommand*{\indexrule}{%
\par\nopagebreak
\vskip-\ht\strutbox
\hrulefill\par\pagebreak[3]
\vskip -\baselineskip
\hrulefill\par\nobreak
}
\newcommand*{\starttheindex}{\raggedcolumns}
\newcommand*{\stoptheindex}{\indexrule}
\makeatletter
\renewcommand*{\@idxitem}{\par\nopagebreak\hangindent 2em\hskip 1.5em}% indent the entry
\makeatother
\begin{document}
\chapter{Test}
Irgendein Text.
\section{Eins}
Blablabla.
\subsection{Regeln}
\index{Ausland}
\index{Sieger}
\index{Spieler}
\index{Spielfeld}
\subsection{Beschäftigung}
\index{Beruf}
\index{Arbeit}
\index{Test1}\index{Test2}\index{Test3}\index{Test4}\index{Test5}
\index{Test6}\index{Test7}\index{Test8}\index{Test9}\index{Test10}
\vfill
\clearpage% should be used before \addcontentsline
\addcontentsline{toc}{chapter}{Stichwortverzeichnis}% the index is a chapter and becomes the font for chapter entries that is already bold
\renewcommand{\indexname}{Stichwortverzeichnis}
\fontsize{7.5pt}{0pt}
\printindex
\end{document}
그러나 그룹이 열 높이보다 크면 열이 너무 많아지기 때문에 이 방법은 권장하지 않습니다.
규칙 위의 수직 거리를 변경하려면 선을 변경하면 됩니다.
\vskip-\ht\strutbox
의 정의에서 \indexrule
예를 들어,
\newcommand*{\indexrule}{%
\par\nopagebreak
\vskip\dp\strutbox\nopagebreak
\hrulefill\par\pagebreak[3]
\vskip -\baselineskip
\hrulefill\par\nobreak
}
결과는
못생긴 URW-Arial이 설치되어 있지 않기 때문에 다른 글꼴을 사용했습니다.
또한 제가 코드에 추가한 몇 가지 메모도 살펴보시기 바랍니다.