Tufte 样式全页宽度代码列表

Tufte 样式全页宽度代码列表

我正在编写一本具有\documentclass{tufte-book}文档类的书。书中有代码列表,有些是全页宽度(它们进入侧边距),有些不是。使用列表时,列表的标题和标题位于列表上方,而不是侧边距中。图形确实在侧边距中有标题,如果添加,它*会使图形全宽。我将图形标题的名称改为“列表”,这样我就可以简单地将放在里面,lstinputlisting并具有与列表相同的所有功能,但可以按我想要的方式工作。问题刚刚出现在我的代码超过一页的地方。图形不会延伸到下一页,它只是将图形截断在页面下方。有没有办法实现列表,使其具有与 tufte-book 文档类的图形相同的功能(即添加*全宽和侧边距中的标题)或让图形像列表一样跨越多页?

答案1

所以这并不是一个让我满意的解决方案,我想它对任何发现这个问题的人来说都是有用的。

  1. 我这样做是\addto\captionsenglish{\renewcommand{\figurename}{Listing}}为了将图形标题的名称更改为“listing”,以便为列表提供图形在 tufte 文档类中具有的所有功能。请注意,这里的一个问题是,如果您还有图形,它也会将这些名称更改为“listing”。也许可以通过创建一个自定义命令来解决这个问题,该命令只复制具有新名称的图形,但不确定。

  2. 我做了这个

    \usepackage{caption}
    \captionsetup{compatibility=false, font={small,rm}, labelfont={bf,rm}}
    \usepackage{subcaption}
    

    添加标题功能,以便我可以使用\ContinuedFloat。这将覆盖 tufte 样式的字体样式/格式,因此您可以在此处更改字体以匹配以前的字体。

  3. 我这样做是为了分割一个图形

    \begin{figure*}
        \caption{apps/fdiff/shared.py}
        \label{apps/fdiff/shared}
        \begin{tcolorbox}[enlarge top by=9pt, enlarge bottom by=9pt, top=-9pt, bottom=-9pt,arc=0pt,outer arc=0pt,boxrule=0pt,colback=background]
            \lstinputlisting[language=python_custom, firstline=1, lastline=58]{fdiff/shared.py}
        \end{tcolorbox}
    \end{figure*}
    
    \clearpage
    
    \begin{figure*}\ContinuedFloat
        \caption{apps/fdiff/shared.py}
        \begin{tcolorbox}[enlarge top by=9pt, enlarge bottom by=9pt, top=-9pt, bottom=-9pt,arc=0pt,outer arc=0pt,boxrule=0pt,colback=background]
            \lstinputlisting[language=python_custom, firstline=59, lastline=75]{fdiff/shared.py}
        \end{tcolorbox}
    \end{figure*}
    

您必须通过调整firstlinelastline参数来手动调整分割的位置,这很烦人。我发现一页上大约有 60 行,但可能需要稍微调整以更好地适应函数代码块。此外,我language有一个自定义设置,因此应该将其更改为您选择的语言。之所以tcolorbox添加,是因为当我将 .tex 编译为 pdf 时,每行之间都有奇怪的空白线。这对您来说可能不需要。

相关内容