我想删除图片标题中的前缀。我使用 MikTeX、XeLaTeX 和tufte-latex
样式类。我尝试了三种变体:
\caption*{Foto}
\usepackage[labelformat=empty]{caption}
\captionsetup[figure]{labelformat=empty}
但没人帮忙。我做错了吗?以下是 MWE:
\documentclass[nofonts]{tufte-book}
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\usepackage{fontspec}
\setmainfont{Palatino Linotype}
\usepackage{caption}
\begin{document}
\begin{figure}
\includegraphics[scale=0.75]{square.png}
\caption{Foto}
\end{figure}
\end{document}
答案1
如果您只想删除“Fig.”(俄语为“Рис.”),那么
\makeatletter
\renewcommand{\fnum@figure}{\thefigure}
\makeatother
在文档序言中将打印标题为
1:照片
如果您还想去掉数字和冒号,则需要稍微复杂一点的修补:\@caption
必须修改整个命令。
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@caption}
{\noindent\csname fnum@#1\endcsname: \ignorespaces}
{}
{}{}
\makeatother
使用此代码你将只获得
照片
这是一个完整的例子:
\documentclass[nofonts]{tufte-book}
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\usepackage{fontspec}
\setmainfont{Palatino}
\newfontfamily{\cyrillicfont}{Palatino}
%%% With this code no name and number will appear
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@caption}
{\noindent\csname fnum@#1\endcsname: \ignorespaces}
{}
{}{}
\makeatother
%%% Remove the above code and uncomment the following
%%% three lines if you still want the number
%\makeatletter
%\renewcommand{\fnum@figure}{\thefigure}
%\makeatother
\begin{document}
\begin{figure}
\includegraphics[scale=0.75]{square.png}
\caption{Foto}
\end{figure}
\end{document}
该包caption
无法使用,因为它tufte-book
以不兼容的方式重新定义了字幕的代码。
如果您不想要前缀和数字,但仍然想要一个数字列表(当然不包含数字),请在前面添加以下代码\makeatother
:
\pretocmd{\@tufte@lof@line}
{\begingroup\let\numberline\@gobble}
{}{}
\apptocmd{\@tufte@lof@line}
{\endgroup}
{}{}
列表中的标题将链接至实际图形。
答案2
下面的示例更进一步,还从 LoF 中删除了详细信息,因为\@caption
默认情况下包含这些详细信息:
\documentclass{tufte-book}% http://ctan.org/pkg/tufte-latex
\makeatletter
\newenvironment{nocapfigure}
{\let\H@refstepcounter\@gobble%
\long\def\@caption##1[##2]##3{%
\par%
%\addcontentsline{\csname ext@##1\endcsname}{##1}%
% {\protect\numberline{\csname the##1\endcsname}{\ignorespaces ##2}}%
\begingroup%
\@parboxrestore%
\if@minipage%
\@setminipage%
\fi%
\@tufte@caption@font\@tufte@caption@justification%
\noindent\ignorespaces##3\par%\noindent\csname fnum@#1\endcsname: \ignorespaces#3\par%
%\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}\figure
}{\endfigure}
\makeatother
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}
\listoffigures
\begin{figure}
\includegraphics[scale=0.75]{example-image-a}
\caption{Foto}
\end{figure}
\begin{nocapfigure}
\includegraphics[scale=0.75]{example-image-a}
\caption{Foto}
\end{nocapfigure}
\begin{figure}
\includegraphics[scale=0.75]{example-image-a}
\caption{Foto}
\end{figure}
\end{document}
删除\addcontentsline
的部分\@caption
会删除插入的一切来自 LoF。如果您希望保留图形标题,则\addcontentsline
只能删除部分内容,例如:
\addcontentsline{\csname ext@##1\endcsname}{##1}%
{\protect\numberline{}{\ignorespaces ##2}}%
从技术上讲,这只是删除了的内容\numberline
,从而为 LoF 中的条目提供了适当的水平位置。
通过补丁程序的代码长度(使用etoolbox
,比如说)相当于对\@caption
totally 进行重新定义,就像我在例子中所做的那样。