眼镜: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}
但是,当我text.tex
自行编译时,它不会选择草稿模式:
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Text}
\blindtext
\end{document}
左边距只是正常宽度。
问题关于如何为单个章节保留此条件布局,您有什么想法吗?
我还使用\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@preamble
)subfiles.sty
。
重要的:确保父文件名是最后一个选项,因为subfiles.cls
可以让内部宏将父文件名保存\preamble@file
到\CurrentOption
带星号的选项声明中。
subfiles
使用2012/05/23的 1.1 版本进行测试。
答案2
另一个选择是修改subfiles.cls
为重置 \@classoptionslist
在调用之前LoadClass
。实际上,LoadClass
在将此变量设置为选项列表之前,会检查该变量是否为空。请参阅这个答案以获得候选实施方案。