standalone
的手册解释了使用该包的三种方法。
standalone.sty
:\usepackage{standalone}
: 用于非独立类,设置\standalonefalse
;standalone.cls
:\documentclass{standalone}
: 独立使用,设置\standalonetrue
;standalone.tex
::\input{standalone}
与另一个独立类一起使用,设置\standalonetrue
。
但是,TeX Live 不包含。我认为这是一个打包问题,因此我复制了包含和standalone.tex
的源目录,然后重新提取了文件。standalone.dtx
standalone.ins
cp -pr source/latex/standalone ~/
pushd ~/standalone
pdflatex standalone.ins
这将生成standalone.tex
,以及standalone.cls
,standalone.cfg
,standalone.sty
。但是,与其他文件不同,standalone.tex
是空的。
total 272K
drwxr-xr-x 2 <username> <username> 4.0K Gor 3 16:26 ./
drwx------ 103 <username> <username> 12K Gor 3 16:32 ../
-rw-r--r-- 1 <username> <username> 902 Gor 3 16:34 standalone.cfg
-rw-r--r-- 1 <username> <username> 27K Gor 3 16:34 standalone.cls
-rw-r--r-- 1 <username> <username> 178K Tach 25 2016 standalone.dtx
-rw-r--r-- 1 <username> <username> 442 Tach 25 2016 standalone.ins
-rw-r--r-- 1 <username> <username> 2.7K Gor 3 16:34 standalone.log
-rw-r--r-- 1 <username> <username> 34K Gor 3 16:34 standalone.sty
-rw-r--r-- 1 <username> <username> 0 Gor 3 16:34 standalone.tex
据推测,这就是 TeX Live 根本不包含该文件的原因。
现在,docstrip
就我而言,这是一个相当陌生的领域。然而,它.dtx
看起来确实包含了以下代码standalone.tex
:
% \iffalse
%<*standalone.tex>
% \fi
%
%\iffalse
%<*tex>
% \fi
% \subsection{Simple TeX File}
%
% \begin{macrocode}
%%\ProvidesFile{standalone.tex}[2010/02/28 v0.4 Provides if-switch to show if file is compiled standalone]%
% \end{macrocode}
%
% \begin{macro}{\ifstandalone}
% Provides \cs{ifstandalone} switch which is |\iftrue| if the normal |\documentclass|
% was not yet executed (and subsequently redefined to be |\@twoclasseserror|).
% \begin{macrocode}
\expandafter\ifx\csname ifstandalone\endcsname\relax
\expandafter\newif\csname ifstandalone\endcsname
\expandafter\ifx\csname @twoclasseserror\endcsname\documentclass
\else
\standalonetrue
\fi
\fi
% \end{macrocode}
% \end{macro}
%
% \iffalse
%</tex>
% \fi
%
% \iffalse
%</standalone.tex>
% \fi
%
我到底该如何生成文件,standalone.tex
以便我可以编译以下内容进行排版abc
(以不必要的迂回方式)?(请参阅手册第 18 页。)
\input{standalone}
\documentclass{article}
\begin{document}
\ifstandalone
abc
\fi
\end{document}
答案1
这是一个标准.ins
文件,具有
\file{standalone.tex}{\from{standalone.dtx}{standalone.tex}}%
我怀疑这是有意为之
\file{standalone.tex}{\from{standalone.dtx}{standalone.tex,tex}}%
随着这一变化
tex standalone.ins
生成所有文件,包括standalone.tex
以下内容:
%%\ProvidesFile{standalone.tex}[2010/02/28 v0.4 Provides if-switch to show if file is compiled standalone]%
\expandafter\ifx\csname ifstandalone\endcsname\relax
\expandafter\newif\csname ifstandalone\endcsname
\expandafter\ifx\csname @twoclasseserror\endcsname\documentclass
\else
\standalonetrue
\fi
\fi