Конфигурация переменных и каталогов

Конфигурация переменных и каталогов

На Unix-подобных системах, использующих TeX Live, команда kpsewhich --var-value=TEXMFLOCALдает путь к каталогу, куда установить самодельный пакет. Например, на моем Mac я получаю путь /usr/local/texlive/texmf-local.

Работает ли это на Windows с использованием TeX Live?

решение1

Хотя вы уже получили некоторые ответы (некоторые из них в комментариях), позвольте мне сказать следующее: TeXLive (и MikTeX, насколько мне известно)

  1. настроен, чтобы использовать правильно заполненныйТДС, представляющая собой структуру(ы) каталогов TeX.
  2. использует инструменты Karl Berry Search Path. Поэтому вы можете использовать инструмент командной строки, kpsewhichчтобы определить, где находится файл. Эта команда была вдохновлена ​​инструментом Unix which, который пытается найти местоположение заданного исполняемого файла. Для использования в TeX-системах она была немного улучшена.

Особенно в TeXLive (но, опять же, я думаю, и в MikTeX тоже), вы можете использовать более одного дерева TDS параллельно другому. Обычно, системы TeXLive настроены на три таких дерева TDS:

  1. TDS для сопровождающего дистрибутивов,
  2. TDS для локального системного администратора,
  3. TDS для индивидуального пользователя.

Первый содержит все пакеты, которые поставляются с TeXLive (MikTeX, соответственно). Он будет установлен, когда вы (как системный администратор) устанавливаете свою TeXLive-System. Он будет изменен, когда вы обновляете свою TeXLive-System. Поэтому вам не следует устанавливать никакие пакеты в это TDS-дерево (если вы, конечно, не являетесь сопровождающим TeXLive. Но зачем мне тогда объяснять вам установку?).

Второе дерево TDS предназначено для системного администратора, который поддерживает своих пользователей с помощью центрального репозитория легко устанавливаемых локальных пакетов. Например, файлы стилей, соответствующие корпоративному дизайну вашего университета, будут установлены здесь. Если это сетевой ресурс, все пользователи TeX во всем университете (вся компания, если хотите) могут использовать эти файлы без какой-либо дополнительной настройки. Чтобы иметь возможность устанавливать пакеты в этом дереве, вам обычно также необходимо иметь права системного администратора, чтобы иметь возможность записывать здесь файлы.

Третье и последнее дерево — это дерево для отдельного пользователя. Оно будет расположено в каталоге, принадлежащем самому пользователю; классически это был домашний каталог пользователя в системах Unix.

Вы можете использовать командный инструмент TeXLive, tlmgrчтобы узнать, где находятся эти три TDS на вашем компьютере. Просто запустите

tlmgr conf

и проверьте наличие строк, начинающихся с

  1. TEXMFDIST
  2. TEXMFLOCAL
  3. 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мы будем делать этобез привилегий администратора.

Конфигурация переменных и каталогов

  1. Конфигурация TEXMFHOME При запуске в командной строке cmdвы получите:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf

Но, на самом деле texmfкаталог не существует как таковой, мы должны создать его, следуя TDSструктуре. Мы создадим его, обращая внимание на разделитель пути, который в данном случае \.

C:\Users\yourself>mkdir texmf\tex\latex
  1. Конфигурация 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командой в примере.

  1. Конфигурация 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с соответствующими инструкциями для совместного проекта.

Связанный контент