子文件未检测草稿模式

子文件未检测草稿模式

眼镜:win7x64,miktex,texstudio

文件夹结构

root/
 - main.tex
 - text.tex

我得到了预期更宽的左边距main.tex

\documentclass[draft]{article}
\usepackage{blindtext} % accessories
\usepackage{showframe} % accessories

\usepackage{subfiles}
\usepackage{geometry}
\usepackage{ifdraft}
    \ifdraft{\geometry{left=6cm, right=1cm, vmargin={2.5cm,3cm}, marginparwidth=5.5cm}}
            {\geometry{left=2.7cm, right=2.7cm, top=2.7cm, bottom=2.7cm}}

\begin{document}
\section{Lorem}
    \blindtext
\subfile{text}    
\end{document}

输出_mwe

但是,当我text.tex自行编译时,它不会选择草稿模式:

\documentclass[main.tex]{subfiles}
\begin{document}
\section{Text}
    \blindtext
\end{document}

输出_mwe-alt

左边距只是正常宽度。

问题关于如何为单个章节保留此条件布局,您有什么想法吗?

我还使用\usepackage[obeyDraft]{todonotes}在左边距做笔记,在该final模式下笔记会消失。

答案1

添加

\makeatletter
\def\@classoptionslist{draft}
\makeatother

\documentclass行之前(同时从类声明中取消显式的 'draft' 选项),以main.tex确保 draft 选项在子文件中也处于活动状态text.tex。以下一行是等效的:

\bgroup\makeatletter\gdef\@classoptionslist{draft}\egroup

显然,一旦您想改为“final”,只需删除或注释掉该行。

演示图片


选择

您还可以在子文件中直接指定“草稿”选项:

\documentclass[draft,main.tex]{subfiles}

当子文件被重新包含时它将被丢弃main.tex(参见\skip@preamblesubfiles.sty

重要的:确保父文件名是最后一个选项,因为subfiles.cls可以让内部宏将父文件名保存\preamble@file\CurrentOption带星号的选项声明中。

subfiles使用2012/05/23的 1.1 版本进行测试。

答案2

另一个选择是修改subfiles.cls重置 \@classoptionslist在调用之前LoadClass。实际上,LoadClass在将此变量设置为选项列表之前,会检查该变量是否为空。请参阅这个答案以获得候选实施方案。

相关内容