Знам как да дефинирам пакет или клас, но как да го направя достъпен (за себе си) по всяко време?
Да речем, че имам пакетния файл commonstuff.sty
(или myprettyclass.cls
), който искам да мога да включа във всеки файл .tex
, който създам на компютъра си. Къде да го поставя? Трябва ли да стартирам някакъв инсталатор за него, или е достатъчно да го държа в определена папка?
Забележка: Знам, че мога просто да го поставя в същата папка като файла .tex
, но не това искам да направя. Търся начин да "инсталирам" пакета централно на моя компютър.
Можете да създадете папка под началната директория на TeX и да поставите файла .sty
в нея. Използвайте тази команда в командния ред, за да разберете къде:
kpsewhich -var-value=TEXMFHOME
На моя компютър тя показва
C:/Users/stefan/texmf
но може да е ~/texmf/
и на компютър с Linux или Unix.
Следвайки структурата на директориите на TeX, трябва да поставите вашия файл в поддиректория като ~/texmf/tex/latex/commonstuff/``, според коментара на Arthur'по-долу. Предимството на това е, че ***не е необходимо да се актуализира базата данни с пакети***, тъй като TeX търси директно във вашето лично дърво
texmf. Ако в домашното ви дърво
texmfима файл
ls-R`, можете спокойно да го изтриете, тъй като TeX така или иначе няма да го използва. (Забележка: това предполага, че личното ви дърво се намира на локална файлова система: потребителите с отдалечено монтирани домашни папки все още може да се нуждаят от хеш.)
По отношение на MiKTeX, погледнете раздела "Инсталиране на sty или cls файлове" в отговора на въпроса Как мога ръчно да инсталирам пакет на MikTex (Windows).
След това можете да проверите с какъв файл ще се използва:
kpsewhich filename.sty
Това ще покаже пътя до файла, който е взет от имплементацията на TeX.
Файловете .sty
трябва да се поставят в някоя поддиректория на tex/latex
в дърво на texmf. Тези дървета имат доста фиксирана структура, но местоположението им може да варира в зависимост от операционната система и дистрибуцията на TeX. Ако използвате Unix (включително Mac OS) и TeX Live, по подразбиране има йерархия
/usr/local/texlive/2009/texmf
/usr/local/texlive/2009/texmf-dist
/usr/local/texlive/texmf-local
както и други директории. Искате да го поставите в директорията texmf-local
, не в другите директории, които се управляват от инсталатора на TeX Live; когато надграждате TeX Live, вашият пакет може да бъде презаписан. Йерархията texmf-local
, както подсказват имената, е за локалните пакети, управлявани от вас; тя няма да бъде засегната от актуализациите (затова е и директно под директорията texlive
, а не под texlive/2009
, например).
Можете също така да изберете да създадете директория, наречена texmf
, във вашата домашна директория и пакетът ще бъде видим само за вас, а не за другите потребители на вашия компютър.
Смятам, че в Windows с MiKTeX директорията за локални инсталации по подразбиране е C:\Localtexmf
.
Във всеки случай и независимо от вашата дистрибуция, трябва да поставите файла .sty
вътре в .../texmf-local/tex/latex
, а не директно в главната директория; в противен случай просто няма да се получи.
Тогава, ако сте'инсталирали пакета в домашната си директория, няма какво да правите. От друга страна, ако сте поставили texmf-local
, трябва да стартирате помощната програма mktexlsr
(или texhash
, това е псевдоним).
В Linux можете да изберете произволна директория и да добавите ред като
export TEXINPUTS=".:~/latex:"
към вашия .bashrc файл (можете да добавите няколко директории, разделени с двоеточия. Мисля, че в началото трябва да сложите '.'). Възможно е да има нещо подобно и в Windows. Намирам това за по-лесно, тъй като отделя "моите" неща от дървото на texmf. Вероятно не е чудесно, ако пишете голям пакет, но е удобно за някои малки неща, които просто искате да споделите между всичките си проекти.