我想格式化 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
所基于的“保证金浮动环境”中使用时,它会影响整个浮动:marginfigure
margintable
\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}
我不建议这么做。