目前,我对我的 listoffigures 有点纠结。- 我“只是”想将(这里是“Pict。”)放在lof 中\figurename
的前面。这里有一个小代码示例:\contentslabel
\documentclass[oneside,openright,BCOR=5mm,paper=a4,fontsize=11pt]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[automark]{scrpage2}
\usepackage{xcolor}
\usepackage{geometry}
\geometry{a4paper, top=35mm, left=30mm, right=30mm, bottom=25mm, headsep=15mm, footskip=12mm}
\usepackage[demo]{graphicx}
\usepackage{textpos}
\usepackage{blindtext}
\usepackage{lipsum}
\usepackage{titletoc}
\usepackage{mparhack}
\addto\captionsngerman{\renewcommand{\figurename}{Pict.}}
\titlecontents{figure}[2.0cm]{\footnotesize}{\contentslabel{2.0cm}}{\hspace*{-1.5cm}}{\titlerule*[0.12cm]{.}\contentspage}[\addvspace{6pt}]
\begin{document}
\pagestyle{scrheadings}
\clearscrheadfoot
\ohead[\headmark]{\headmark}
\listoffigures
\chapter{Chapter}
\lipsum[1]
\begin{figure}[htbp]
\centering
\includegraphics[width=8cm,height=5cm]{demo}%
\caption{My Picture}
\end{figure}
\end{document}
目前我尝试了这个:
\titlecontents{figure}[2.0cm]{\footnotesize}{\figurename\contentslabel{2.0cm}}{\hspace*{-1.5cm}}{\titlerule*[0.12cm]{.}\contentspage}[\addvspace{6pt}]
...但这总是导致类似这样的结果:
"1.1 Pict. My Picture ................................ 2"
但——你可能已经猜到了——这不是我想要的。我想要的结果如下:
"Pict. 1.1 My Picture with a long caption that has to
be broken ................................. 2"
有人能帮我解决吗?提前谢谢大家。
埃尼姆
答案1
向列表中的每个项目添加相同的单词似乎不是最好的方法。通常类型由列表名称给出,例如List of Tables
(Tabellenverzeichnis) 或List of Figures
(Abbildungsverzeichnis)。
但如果你真的想这么做,你可以使用listof=entryprefix
。我在示例中完全删除了它titletoc
,因为不建议在 KOMA 类中使用它。
\documentclass[listof=entryprefix]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[automark]{scrpage2}
\usepackage{lipsum}
%\addto\captionsngerman{\renewcommand{\figurename}{Pict.}}
\renewcaptionname{ngerman}{\figurename}{Pict.}%also possible
%\usepackage{titletoc}
%\titlecontents{figure}[2.0cm]{\footnotesize}{\contentslabel{2.0cm}}{\hspace*{-1.5cm}}{\titlerule*[0.12cm]{.}\contentspage}[\addvspace{6pt}]
\begin{document}
\listoffigures
\chapter{Chapter}
\lipsum[1]
\begin{figure}[htbp]
\centering
\rule{4cm}{3cm}
\caption{My Picture}
\end{figure}
\end{document}
仍在加载其他tocloft
toc-altering 包,您可以用更复杂的方式实现它。由于我是 KOMA 的普通用户,我对nor并没有太多经验titletoc
。可能有更好的方法,我强烈建议使用 \KOMAScript 已经为您提供的工具。
我不推荐以下内容:
\documentclass{scrartcl}%JB just to keep it on one page
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\renewcaptionname{ngerman}{\figurename}{Pict.}
%the dance of the drunken sailor starts
\usepackage{titletoc}
\titlecontents{figure}[\figurename 2.0cm]{\footnotesize}{\contentslabel{2.0cm}}{\hspace*{-1.5cm}}{\titlerule*[0.12cm]{.}\contentspage}[\addvspace{6pt}]
\usepackage{tocloft}
\newlength\mylena
\settowidth\mylena{Figure}
\addtolength\cftfignumwidth{\mylena}
\renewcommand\cftfigpresnum{\figurename\space}
%The dance is over, but his ankles hurt. There might be something broken
\begin{document}
\listoffigures
\begin{figure}[htbp]
\centering
\rule{4cm}{3cm}
\caption{My Picture}
\caption{My Picture}
\caption{My Picture}
\caption{My Picture}
\end{figure}
\end{document}
答案2
我知道这个已经有 7 年了,但是为了不让未来的读者对不起作用的解决方案感到困惑titletoc
(是的,KOMA 脚本更简单),您只需要\hspace{-x}
在之前添加\figurename
。这意味着:
\usepackage{titletoc}
\titlecontents{figure}[3.0cm]%left section/margin
{}%abovecode, aka global formats usually
{\hspace{-2.2cm} \figurename \ \thecontentslabel \}%numbered figure, in this case
{}%unnumbered figure, mostly unneeded for me
{\titlerule*[0.12cm]{.}\contentspage}%filler page, for the dotted lines
[\addvspace{6pt}] %vertspace, could be empty if you like it.
如您所见,需要调整的两个重要数字是左边距的数字和\hspace
编号条目(如果您愿意,也可以是未编号的)中图形名称之前的数字。对我来说,答案是 3 厘米和 -2.2 厘米,您的答案可能有所不同。
我的结果是
Figure 4.2 Lorem ipsum dolor sit amet consectetur elit
Consectetur adipiscing elit ................ 42
并不是
4.2 Figure Lorem ipsum dolor sit amet consectetur elit
Consectetur adipiscing elit ................ 42
或者
Figure 4.2 Lorem ipsum dolor sit amet Consectetur elit
Consectetur adipiscing elit ........................... 42
它并不完美(定位很乱,如果你有一个单行 lof 和两行 lof,它们不会从同一个地方开始,即单词figure
实际上不会从同一个地方开始)