
На Unix-подобных системах, использующих TeX Live, команда kpsewhich --var-value=TEXMFLOCAL
дает путь к каталогу, куда установить самодельный пакет. Например, на моем Mac я получаю путь /usr/local/texlive/texmf-local
.
Работает ли это на Windows с использованием TeX Live?
решение1
Хотя вы уже получили некоторые ответы (некоторые из них в комментариях), позвольте мне сказать следующее: TeXLive (и MikTeX, насколько мне известно)
- настроен, чтобы использовать правильно заполненныйТДС, представляющая собой структуру(ы) каталогов TeX.
- использует инструменты Karl Berry Search Path. Поэтому вы можете использовать инструмент командной строки,
kpsewhich
чтобы определить, где находится файл. Эта команда была вдохновлена инструментом Unixwhich
, который пытается найти местоположение заданного исполняемого файла. Для использования в TeX-системах она была немного улучшена.
Особенно в TeXLive (но, опять же, я думаю, и в MikTeX тоже), вы можете использовать более одного дерева TDS параллельно другому. Обычно, системы TeXLive настроены на три таких дерева TDS:
- TDS для сопровождающего дистрибутивов,
- TDS для локального системного администратора,
- TDS для индивидуального пользователя.
Первый содержит все пакеты, которые поставляются с TeXLive (MikTeX, соответственно). Он будет установлен, когда вы (как системный администратор) устанавливаете свою TeXLive-System. Он будет изменен, когда вы обновляете свою TeXLive-System. Поэтому вам не следует устанавливать никакие пакеты в это TDS-дерево (если вы, конечно, не являетесь сопровождающим TeXLive. Но зачем мне тогда объяснять вам установку?).
Второе дерево TDS предназначено для системного администратора, который поддерживает своих пользователей с помощью центрального репозитория легко устанавливаемых локальных пакетов. Например, файлы стилей, соответствующие корпоративному дизайну вашего университета, будут установлены здесь. Если это сетевой ресурс, все пользователи TeX во всем университете (вся компания, если хотите) могут использовать эти файлы без какой-либо дополнительной настройки. Чтобы иметь возможность устанавливать пакеты в этом дереве, вам обычно также необходимо иметь права системного администратора, чтобы иметь возможность записывать здесь файлы.
Третье и последнее дерево — это дерево для отдельного пользователя. Оно будет расположено в каталоге, принадлежащем самому пользователю; классически это был домашний каталог пользователя в системах Unix.
Вы можете использовать командный инструмент TeXLive, tlmgr
чтобы узнать, где находятся эти три TDS на вашем компьютере. Просто запустите
tlmgr conf
и проверьте наличие строк, начинающихся с
TEXMFDIST
TEXMFLOCAL
TEXMFHOME
Они указывают вам правильные места в вашей установке TeX.
(Я не знаю инструмента, который предоставляет эту информацию о MikTeX, извините.)
Также есть строка, начинающаяся с texmf.cnf
которой будет указано местоположение файла главной конфигурации. Если вы когда-нибудь планируете изменить некоторые местоположения и вы действительно знаете, что вы там делаете, это файл для редактирования!
Есть еще одна важная вещь, на которую следует обратить внимание. В настоящее время полноценная система TeX состоит из сотен тысяч файлов. Для вашего компьютера было бы утомительно снова и снова искать каждый путь, просто чтобы найти, скажем, book.cls
. (Я уже говорил, что компьютеры глупы? Компьютеры не могут запомнить эти местоположения, если вы не предоставите никакой помощи!) Чтобы предотвратить поиск, поиск и повторный поиск, все файлы, которые находятся в дереве TDS дистрибутива и в локальном дереве TDS, хранятся в простой базе данных. Поэтому недостаточно скопировать файл в одно из этих деревьев. TeX не найдет эти файлы, если вы не обновите базу данных. Конечно, вам наверняка понадобятся права суперпользователя (AKA super cow power :-)) для обновления базы данных. В классических системах Unix это была команда texhash
или mktexlsr
, которая является краткой формой "Make the TeX ls-minus-R database" (Если честно: это не что иное, как ls -R $TEXMFDIST
или любое дерево TDS, которое вы хотите добавить в свою базу данных.)
Подводя итог всему этому: если вы планируете обогатить мир, выпустив свой пакет для установки на чей-то компьютер, лучшим способом будет убедить сопровождающих TeXLive включить его в TeXLive. Тогда вам больше не о чем беспокоиться. Если ваш пакет не так важен, чтобы вы могли убедить сопровождающих TeXLive включить его, может быть, лучше всего проинструктировать своих клиентов установить его в часть TEXMFHOME
их системы. Просто попросите их запустить
tlmgr conf | grep TEXMFHOME
на Unix-подобных системах. На более новых системах Windows, где установлен bash, это также может работать. В этом месте им не нужны суперсилы коровы, и им не нужно возиться с обновлением базы данных. Если вы случайно отдадите свой пакет системным администраторам, они обычно знают, где хранить пакет и как обновлять базу данных.
PS: Если вы хотите быть уверены, что новейшая book.cls
версия от CTAN будет использоваться в вашей системе TeXLive, пока разработчики не включили ее в свой дистрибутив, вам нужно установить ее либо в , TEXMFLOCAL
либо TEXMFHOME
и настроить свою систему, отредактировав ее temf.cnf
таким образом, чтобы TEXMFDIST
поиск производился в последнем из трех указанных деревьев TDS.
решение2
Одна из вещей, которую следует иметь в виду, заключается в том, что в Windows многие переменные конфигурации не активированы по умолчанию, в дополнение к этому, некоторые вещи мы можем делать с правами администратора, а другие как простой пользователь. Я склоняюсь к варианту простых пользователей, то есть конфигурации будут влиять только на текущего пользователя системы.
Для этого примера имя пользователя — yourself
и каждый раз при запуске командной строки cmd
мы будем делать этобез привилегий администратора.
Конфигурация переменных и каталогов
- Конфигурация
TEXMFHOME
При запуске в командной строкеcmd
вы получите:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf
Но, на самом деле texmf
каталог не существует как таковой, мы должны создать его, следуя TDS
структуре. Мы создадим его, обращая внимание на разделитель пути, который в данном случае \
.
C:\Users\yourself>mkdir texmf\tex\latex
- Конфигурация
TEXMFCNF
Откройте командную строкуcmd
и выполните следующую команду:
C:\Users\yourself>kpsewhich -all texmf.cnf
c:/texlive/2019/texmf.cnf
c:/texlive/2019/texmf-dist/web2c/texmf.cnf
Вывод показывает, что переменная не настроена для нашего пользователя. Настраиваем ее следующим образом:
C:\Users\yourself>setx TEXMFCNF C:/Users/yourself/texmf;
CORRECTO: se guardó el valor especificado.
Мы выходим, возвращаемся и бежим:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
OneDrive REG_EXPAND_SZ C:\Users\yourself\OneDrive
TEXMFCNF REG_SZ C:/Users/yourself/texmf;
Мы закончили настройку этой переменной. Эта переменная будет использоваться вместе с auxtrees
командой в примере.
- Конфигурация
TEXINPUTS
Предположим, у нас есть разделы каталогаD:/transcripts
или изображения, но они доступны только локально, и мы хотим их для тестирования. Лучше всего в этом случае использовать переменную,TEXINPUTS
и здесь все зависит от того, хотим ли мы, чтобы конфигурация была постоянной (всегда доступной) или временной (только в текущей консоли).
а. Временная конфигурация Откройте командную строку cmd
и выполните:
C:\Users\yourself>set TEXINPUTS=.;D:/transcripts//;
это будет работать до тех пор, пока вы не закроете командную строку, то есть вы должны выполнить этокаждый разпосле закрытия командной строки.
б) Постоянная конфигурация Откройте командную строку cmd
и выполните:
C:\Users\yourself>setx TEXINPUTS .;D:/transcripts//;
закрыть командную строку. Таким образом мы настроили TEXINPUTS
в вашемпеременная окруженияи теперь это проникает повсюду.
Если вам нужно увидеть TEXINPUTS
переменную окружения, используйте:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
Если вам необходимо удалить TEXINPUTS
переменную окружения, используйте:
C:\Users\yourself>reg delete HKEY_CURRENT_USER\Environment /v TEXINPUTS /f
Альтернативно это можно сделать в графическом режиме, настроивпеременная окружения.
Полный пример использованияauxtrees
Это часть конфигурации, которую мы используем с группой коллег в моей работе, используя проект, размещенный в github
(который мы также распространяем в .zip
формате) с использованием некоторых пакетов и пользовательских классов, транскрибируйте часть, связанную с окнами (надеюсь, вы понимаете, мой родной язык испанский). Папка TDS
для этого примера находится в , D:/ltxcole/stycole/
а структура проекта такова:
D:\ltxcole>tree
Listado de rutas de carpetas para el volumen driveD
El número de serie del volumen es FACD-A6DF
D:.
├───octavo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ ├───test
│ └───trabajos
├───produccion
├───septimo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ └───test
├───sintesis
└───stycole
└───tex
└───latex
Ключ в том, stycole
что имеет TDS
структуру:
└───stycole
└───tex
└───latex
colegio-new2019.sty
keyanswer.sty
logoaurora.jpg
tkz-custom.sty
Документация TeXLive для конфигураций Windows не очень "поясняющая", но на форуме есть хорошая информация. Использование auxtrees
позволяет поддерживать несколько проектов, не затрагивая всю систему, используя TEXMFLOCAL
переменную или загружая все в TEXMFHOME
.
Откройте командную строку cmd
и выполните:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
tlmgr.pl: no auxiliary texmf trees defined.
вывод говорит нам, что у нас ничего не настроено, теперь мы запускаем:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf add D:/ltxcole/stycole/
Чтобы убедиться, что все правильно, запускаем:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
List of auxiliary texmf trees:
D:/ltxcole/stycole/
На этом мы закончили настройку нашего проекта, файлы, размещенные в D:/ltxcole/stycole/tex/latex/
будут доступны для всех наших файлов. Файл C: Users\yourself\texmf.cnf
содержит следующую строку:
TEXMFAUXTREES = D:/ltxcole/stycole/,
и вы можете добавлять столько проектов, сколько захотите, при условии соблюдения структуры TDS
.
Конечно, если вы хотите провести тесты только для себя, то проще использовать TEXMFHOME
, хотя преимущество использованияauxtrees+git
в том, что вы можете сгенерироватькроссплатформенныйконфигурациясценарий или простое README
с соответствующими инструкциями для совместного проекта.