使用 Tufte 书籍时将“方案”定义为标题

使用 Tufte 书籍时将“方案”定义为标题

我目前正在用这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}

在此处输入图片描述

相关内容