Saturday, February 19, 2022

Texlive

  •  Installation with pacman 
    • texlive-bin
    • texlive-core
    • texlive-fontsextra
    • texlive-formatsextra
    • texlive-langchinese
    • texlive-latexextra
    • texlive-pictures

  • texdoc
    • install
      • yay texlive-most-doc
      • https://bbs.archlinux.org/viewtopic.php?id=241012
    • "No texlive.tlpdb nor shipped tlpdb data found"
    • tlmgr install --with-doc xxx
  • font
    • mkdir font folder: .local/share/fonts/
    • install Ericsson and chinese font
      • ./.local/share/fonts/ericsson/EricssonHilda-Medium.ttf
      • ./.local/share/fonts/ericsson/EricssonTechnicalIcons-Regular.ttf
      • ./.local/share/fonts/ericsson/EricssonHilda-Regular.ttf
      • ./.local/share/fonts/ericsson/EricssonCapitalTT.ttf
      • ./.local/share/fonts/ericsson/EricssonHilda-Light.ttf
      • ./.local/share/fonts/ericsson/EricssonHilda-Bold.ttf
      • ./.local/share/fonts/windows/simhei.ttf
      • ./.local/share/fonts/windows/simkai.ttf
      • ./.local/share/fonts/windows/simfang.ttf
      • ./.local/share/fonts/windows/simsunb.ttf
    • TFM
      • tex/latex/pdflatex need TFM files for all fonts.
      • XeTeX and LuaTeX have no need of TFM files for TrueType and OpenType fonts which contain the necessary metrics.
      • see link
  • tlmgr
    • set in .bashrc
      • alias tlmgr='TEXMFDIST/scripts/texlive/tlmgr.pl --usermode'
    • use Tsinghua mirror
      • tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
    • install texlive 2021 package when texlive 2022 is released
      • tlmgr option repository https://ftp.tu-chemnitz.de/pub/tug/historic/systems/texlive/2020/tlnet-final
      • tlmgr install xxx
      • or tlmgr install xxx --repository https://ftp.tu-chemnitz.de/pub/tug/historic/systems/texlive/2020/tlnet-final
    • repository
      • default: default package repository found in the installation's TeX Live Package Database (a.k.a. the TLPDB, which is given entirely in the file tlpkg/texlive.tlpdb (for example ~/texmf/tlpkg/texlive.tlpdb)
      • set in command line: tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet
      • set in configuration file: make a permanent change, use option repository (see the "option" action).
    • correct script error
      • First, edit TEXMFDIST/scripts/texlive/tlmgr.pl and replace $Master ="$Master/../.."; with $Master = "${Master}/../../..";. The path prefix TEXMFDIST is not a predefined environment variable, it is defined below in this article. Replace it with the correct value.
    • system configuration
      • tlmgr conf
        • TEXMFCONFIG=/home/hongy19/.texlive/texmf-config
        • TEXMFDBS={!!/usr/local/share/texmf:/usr/share/texmf,!!/etc/texmf,!!/var/lib/texmf,!!/usr/share/texmf-dist}
        • TEXMFDIST=/usr/share/texmf-dist
        • TEXMFHOME=/home/hongy19/texmf
        • TEXMFLOCAL=/usr/local/share/texmf:/usr/share/texmf
        • TEXMFMAIN=/usr/share/texmf-dist
        • TEXMFSYSCONFIG=/etc/texmf
        • TEXMFSYSVAR=/var/lib/texmf
        • TEXMFVAR=/home/hongy19/.texlive/texmf-var
    • error in tlmgr check file
      • (base) [hongy19@CN-00000988 ~]$ tlmgr check files
        Files present but not covered (relative to /home/hongy19/texmf):
        tex/generic/pgf/tikzlibrarytimeline/tikzlibrarytimeline.code.tex
        web2c/tlmgr-commands.log
        web2c/tlmgr.log
        tlmgr.pl: An error has occurred. See above messages. Exiting.
      • (base) [hongy19@CN-00000988 ~]$ pacman -Qi texlive-core
        Name            : texlive-core
        Version         : 2021.61403-1
      • (base) [hongy19@CN-00000988 ~]$ tlmgr --version
        tlmgr revision 60693 (2021-10-04 04:24:25 +0200)
        tlmgr using installation: /usr/share/texmf-dist/scripts/texlive/../../..
      •   --package-logfile *file* "tlmgr" logs all package actions (install, remove, update, failed updates, failed restores) to a separate log file, by default "TEXMFSYSVAR/web2c/tlmgr.log". This option allows you to specify a different file for the log.
      • --command-logfile *file* "tlmgr" logs the output of all programs invoked (mktexlr, mtxrun, fmtutil, updmap) to a separate log file, by default "TEXMFSYSVAR/web2c/tlmgr-commands.log". This option allows you to specify a different file for the log.
      • when tlmgr running in user mode, log is stored in TEXMFHOME/web2c, not TEXMFSYSVAR/web2c
 if ($opts{"usermode"}) {
    $packagelogfile ||= "$::maintree/web2c/tlmgr.log";
  } else {
    $packagelogfile ||= "$texmfsysvar/web2c/tlmgr.log";
  }

  • Kpathsea, TEXMFDBS and mktexlsr
    • Kpathsea/kpsewhich use TEXINPUTS as search path
    • Kpathsea/kpsewhich use ls-R database first, if no such database, it will search folder.
    • ls-R database
      • recommended way to create and maintain ‘ls-R’ is to run the mktexlsr
      • TEXMFDBS used for ls-R
        • TEXMFDBS ={!!/usr/local/share/texmf:/usr/share/texmf,!!/etc/texmf,!!/var/lib/texmf,!!/usr/share/texmf-dist}
      • TEXMFDBS doesn't include TEXMFHOME which is searched for without ls-R files present.  kpsewhich could still find document in TEXMFHOME
    • search document:  kpsewhich -all markdown.sty
  •  TLPDB (texlive.tlpdb)
    • tlpdb stands for tex live package data base, it is the main control file for the texlive package installation, it lists every package in texlive and whether you have it installed or not, which texlive mirror repository you use and lots of other details. The texlive installation seems broken if it is not there
    • texlive.tlpdb on ctan is no use, the file is a local file that records which packages are installed on that machine it should be
    • tlmgr init-usertree to generate texlive.tlpdb
  • local texmf tree: TEXMFHOME
    • https://www.ugr.es/~ftorralbo/blog/programming/local-texmf/
    • mkdir /home/hongy19/texmf
      • confirm TEXMFHOME path: kpsewhich -var-value=TEXMFHOME
    • tlmgr init-usertree
      • This creates *usertree*"/web2c" and *usertree*"/tlpkg/tlpobj", and a minimal *usertree*"/tlpkg/texlive.tlpdb".
    • no need to run mktexlsr to create ls-R 
  • latexmk
    • copy .latexmkrc into ~
  • markdown
    • tlmgr install markdown
    • xelatex --shell-escape markdown.tex
    • add "\def\markdownOptionOutputDir{/tmp}" if Latex renders "Script file ./input.markdown.lua not found" error into pdf, see link