Недавно я создал класс документа и не так давно закончил его упаковывать в файл DTX. У меня есть установочный файл, который выглядит так:
%%
%% Licence info
%%
\input docstrip.tex
\keepsilent
\usedir{tex/latex/bil-CV}
\preamble
This is a generated file licenced under the MIT License:
The MIT License (MIT)…blah blah blah...
\endpreamble
\generate{\file{bil-CV.cls}{\from{bil-CV.dtx}{class}}}
\obeyspaces
\Msg{*********************************************************}
\Msg{*}
\Msg{* To finish the installation you have to move the}
\Msg{* following file into a directory searched by TeX:}
\Msg{*}
\Msg{* \space\space bil-CV.cls}
\Msg{*}
\Msg{* To produce the documentation run the file bil-CV.dtx}
\Msg{* through LaTeX.}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*********************************************************}
\endbatchfile
Я запускаю это, выполнив команду latex bil-CV.ins
, и получаю следующий вывод:
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=latex)
restricted \write18 enabled.
entering extended mode
(./bil-CV.ins
LaTeX2e <2014/05/01>
Babel <3.9k> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/docstrip.tex
Utility: `docstrip' 2.5d <2005/07/29>
English documentation <2014/04/19>
**********************************************************
* This program converts documented macro-files into fast *
* loadable files by stripping off (nearly) all comments! *
**********************************************************
********************************************************
* No Configuration file found, using default settings. *
********************************************************
)
Generating file(s) ./bil-CV.cls
Processing file bil-CV.dtx (class) -> bil-CV.cls
Lines processed: 407
Comments removed: 262
Comments passed: 9
Codelines passed: 130
*********************************************************
*
* To finish the installation you have to move the
* following file into a directory searched by TeX:
*
* bil-CV.cls
*
* To produce the documentation run the file bil-CV.dtx
* through LaTeX.
*
* Happy TeXing!
*********************************************************
)
No pages of output.
Transcript written on bil-CV.log.
Указав \usedir{tex/latex/bil-CV}
, почему файл класса генерируется в CWD, а не ~/Library/texmf/tex/latex/bil-CV
как указано в /usr/local/texlive/2014/texmf.cnf
и ins-файле?
решение1
Как подробно описано вРуководство по DocStrip, конструкция DocStrip такова, что от вас ожидается установка \BaseDirectory
(поскольку TeX не может знать, куда вы хотите установить) и \UseTDS
(для активации сопоставления ваших \usedir
строк с подходом структуры TDS). Эти строки, скорее всего, предназначены для помещения в docstrip.cfg
файл, а не в .ins
сами файлы.
Как отмечено в комментариях, современные системы TeX не позволяют записывать в каталог выше текущего по соображениям безопасности. (Это можно изменить, но это совсем не рекомендуется.) TeX, и, следовательно, DocStrip, не могут создавать каталоги, поэтому структура также должна быть уже существующей. Таким образом, функцию «извлечь в TDS» DocStrip лучше всего рассматривать как историческую идею и не для использования сегодня. Вместо того, чтобы использовать DocStrip для заполнения локального дерева, более полезным подходом является создание zip-файла в стиле TDS и его использование. Существует множество скриптов, которые помогут в этом процессе.