![使用 Tufte 书籍时将“方案”定义为标题](https://linux22.com/image/356941/%E4%BD%BF%E7%94%A8%20Tufte%20%E4%B9%A6%E7%B1%8D%E6%97%B6%E5%B0%86%E2%80%9C%E6%96%B9%E6%A1%88%E2%80%9D%E5%AE%9A%E4%B9%89%E4%B8%BA%E6%A0%87%E9%A2%98.png)
我目前正在用这tufte-book
门课写论文,并被告知字幕必须进入图形/表格/方案下方(我知道这与主题相悖,但我现在对此无能为力,并计划打印一个不太丑陋的版本以及符合办公室指南的版本)。
使用这里以前的问题,我已经能够定义一个新环境,为其pagefigure
重新定义figure*
环境,以便强制图形下方的标题(我也为表格等进行了设置)。
作为 MWE,下面的代码显示了我为使其工作而添加的附加前言。
\documentclass[a4paper,twoside, symmetric,justified,notoc, nobib]{tufte-book}
\RequirePackage{etoolbox}
\makeatletter
\newif\if@tufte@margtab\@tufte@margtabfalse
\AtBeginEnvironment{margintable}{\@tufte@margtabtrue}
\AtEndEnvironment{margintable}{\@tufte@margtabfalse}
\newcommand{\classiccaptionstyle}{%
\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
\normalsize
\@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par
\endgroup}
\long\def\@makecaption##1##2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{\@tufte@caption@font##1: ##2}%
\ifdim \wd\@tempboxa >\hsize
\@tufte@caption@font\if@tufte@margtab\@tufte@caption@justification\fi##1: ##2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
% \setcaptionfont{\normalfont}
\let\caption\@tufte@orig@caption%
\let\label\@tufte@orig@label}
\makeatother
\newenvironment{pagefigure}{%
\begin{figure*}[b!]
\classiccaptionstyle
}{\end{figure*}}
\begin{document}
\begin{pagefigure}
\includegraphics[scale=1]{graphics/example.eps}
\caption{A Scheme which should take up the full width of the page }
\end{page figure}
\end{document}
我现在需要的是除了“图形”或表格之外还能够定义“方案”。
我认为我可以通过将图形名称更新为方案来做到这一点,如下所示,但这会弄乱编号(方案 1.1,图 1.2 而不是方案 1.1,图 1.1...)。
\renewcommand\figurename{Scheme}
我也尝试定义一个新的环境,如下所示,但这仍然没有给出所需的编号。
\newenvironment{pagescheme}{%
\begin{figure*}[b!]
\renewcommand\figurename{Scheme}
\classiccaptionstyle
}{\end{figure*}}
任何关于如何做到这一点的建议都将不胜感激。理想情况下,它需要由复制pagefigure 环境并更改该环境中任何内容的标题。scheme
从 scatch 定义新环境的包会丢失 tufte 浮动(即它们不受控制地跨越到错误的边距)。
我意识到解决这个问题的明显方法是使用包chemstyle
,但由于各种原因,这与 tufte 文档类不兼容。
答案1
这怎么样:
\documentclass[a4paper,twoside, symmetric,justified,notoc, nobib]{tufte-book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{chemmacros}
\chemsetup{
modules = {scheme}
}
\makeatletter
\AtBeginDocument{
\newenvironment{marginscheme}[1][-1.2ex]
{\@tufte@margin@float[#1]{scheme}}
{\end@tufte@margin@float}
\renewenvironment{scheme}[1][htbp]
{\ifvmode\else\unskip\fi\@tufte@float[#1]{scheme}{}}
{\end@tufte@float}
\renewenvironment{scheme*}[1][htbp]%
{\ifvmode\else\unskip\fi\@tufte@float[#1]{scheme}{star}}
{\end@tufte@float}
\renewcommand\listofschemes{%
\ifthenelse{\equal{\@tufte@class}{book}}%
{\chapter*{\listschemename}}%
{\section*{\listschemename}}%
\@starttoc{los}%
}
\let\l@scheme\l@figure
}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{scheme}
\includegraphics[width=\linewidth]{example-image-a}
\caption{An example caption.}
\label{sch:example}
\end{scheme}
\lipsum[2]
\end{document}