figure标题的解决方案

figure标题的解决方案

我想格式化 tufte-book 中的所有标题(表格、图片等)。内置的 \setcaptionfont 命令导致令人惊讶的结果:边距表格全部格式化,普通表格或图片的标题则完全没有格式化。只有我一个人这样吗……?我使用 Lyx 2.3。

%% LyX 2.3.0 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[ngerman,nohyper]{tufte-book}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\synctex=-1
\usepackage{babel}
\usepackage[unicode=true,pdfusetitle,
 bookmarks=true,bookmarksnumbered=false,bookmarksopen=true,bookmarksopenlevel=1,
 breaklinks=false,pdfborder={0 0 0},pdfborderstyle={},backref=false,colorlinks=false]
 {hyperref}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\setcaptionfont{%
  \color{red}
}
\usepackage{lipsum}

\makeatother

\begin{document}
\begin{margintable}
Red table

\caption{Red caption}
\end{margintable}

\lipsum[5]

\begin{figure}
Black text

\caption{Black Caption}
\end{figure}

\end{document}

答案1

figure标题的解决方案

您指定nohyper为类选项,但还是加载了hyperref包。删除hyperref包可以解决您的问题。只需告诉 LyX 不要加载hyperref,请考虑使用utf8输入编码并为 指定一种语言babel

添加: 如果你想要加载hyperref,那么只需删除类选项nohyper(默认tufte-book加载)。hyperref

\documentclass[ngerman,nohyper]{tufte-book}
\usepackage[utf8]{inputenc}% utf8 is better than latin9
\usepackage[T1]{fontenc}
%\usepackage{babel}% What language?
\usepackage[english]{babel}
\setcaptionfont{%
  \color{red}
}
\usepackage{lipsum}

\begin{document}
\begin{margintable}
Red table
\caption{Red caption}
\end{margintable}

\lipsum[5]

\begin{figure}
Black text
\caption{Black Caption}
\end{figure}

\end{document}

图片标题颜色已修复

问题在于\setcaptionfont

正如您在下面的评论中提到的,margintable内容也是彩色的,这是不受欢迎的。

但恐怕这是故意设计的(或者可能是一个错误?)。

的定义\setcaptionfont可以在tufte-common.def

\newcommand*{\setcaptionfont}[1]{\renewcommand*{\@tufte@caption@font}{#1}}

它调用内部命令\@tufte@caption@font

当在和\@tufte@caption@font所基于的“保证金浮动环境”中使用时,它会影响整个浮动:marginfiguremargintable

\newenvironment{@tufte@margin@float}[2][-1.2ex]%
  {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order.
  \begin{lrbox}{\@tufte@margin@floatbox}%
  \begin{minipage}{\marginparwidth}%
    \@tufte@caption@font% <-- Your customized style is applied to the whole minipage
    \def\@captype{#2}%
    \hbox{}\vspace*{#1}%
    \@tufte@caption@justification%
    \@tufte@margin@par%
    \noindent%
  }
  {\end{minipage}%
  \end{lrbox}%
  \marginpar{\usebox{\@tufte@margin@floatbox}}%
  }

因此,在设计师的心中tufte-book,你应该把边注位置仅显示标题文本嗯,除了图形,当然它们是不是受字体改变命令的影响。

从印刷的角度来看,我同意你应该绝不将表格放在边注位置(表格属于正文)。如果你坚持,那么有一个解决方法:

\documentclass[ngerman,nohyper]{tufte-book}
\usepackage[utf8]{inputenc}% utf8 is better than latin9
\usepackage[T1]{fontenc}
%\usepackage{babel}% What language?
\usepackage[english]{babel}
\setcaptionfont{%
  \color{red}
}
\usepackage{lipsum}

% Define a font style switch for better coding.
% Add the following line to LyX: Document -> Settings -> LaTeX Preamble
\newcommand*\restoremarginfontstyle{\color{black}}

\begin{document}
\begin{margintable}
\begingroup% <-- Need to be inserted by Ctrl+L in LyX
\restoremarginfontstyle% <-- Switch used here, need to be inserted by Ctrl+L in LyX
Red table? Now black!
\endgroup% <-- Need to be inserted by Ctrl+L in LyX
\caption{Red caption}
\end{margintable}

\lipsum[5]

\begin{figure}
Black text
\caption{Black caption? Now red!}
\end{figure}

\end{document}

已修复的解决方法

我不建议这么做。

相关内容