Skip to content

small (la)tex files showing features, solutions, and attempts

Notifications You must be signed in to change notification settings

muzimuzhi/latex-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LaTeX examples

  • Dec 13, 2022 Rewrote whole Git history to track all PDF files with Git LFS.
    (by executing git lfs migrate import --include="*.pdf" --everything).

Utilities

User Interface

  • \begin{example}[tcb options]{title}, code followed by output, numbered
  • \begin{example*}[tcb options]{title}, unnumbered variant

Typical configured usage

  • side by side, \begin{example}[sidebyside]{title}
  • change code language, \begin{example}[minted options app={language=python}]{title}

Internals

  • direct dependencies:
    • tcolorbox, with libraries hooks, minted, skins and xparse loaded
    • accsupp
  • environments are based on tcolorbox's minted library, -shell-escape required
  • added
    • \emptyaccsupp
    • tcolorbox options example options and example title
  • modified
    • \theFancyVerbLine

User Interface

  • loading: \usepgfkeyslibrary{conditionals}
  • conditional keys
    • /utils/ifname nTF={<name>}{<true options>}{<false options>} executes \if<name> ... \else ... \fi
    • /utils/ifxxx nTF={<ifxxx header>}{<true options>}{<false options>} executes <ifxxx header> ... \else ... \fi
      • /utils/ifnum nNnTF={<int expr a>}<relation>{<int expr b>}{<t>}{<f>} (trick: hide <relation> = in braces, like /utils/ifnum 1{=}1tf)
      • /utils/ifdim nNnTF={<dim expr a>}<relation>{<dim expr b>}{<t>}{<f>}
      • /utils/if NNTF=<token a><token b>{<t>}{<f>} (\noexpand auto applied to <tokan a> and <token b>)
      • /utils/ifcat NNTF=<token a><token b>{<t>}{<f>} (ditto)
      • /utils/ifx NNTF=<token a><token b>{<t>}{<f>}
      • /utils/if strcmp nTnTF={<text a>}<relation>{<text b>}{<t>}{<f>} (<text a/b> are auto wrapped by \unexpanded; relies on primitive \(pdf)strcmp or its mock in Lua)

Internals

  • prefix \pgfkeys@lib@cond@xxx

TODO

  • export to other default paths
    to support uses like \tcbset{ifnum TF=...} with no need to set \pgfkeys{/tcb/.see also={/utils}}. Also more space consumption for shorter time.
    • utility to copy a key (need to learn if filtered library adds any internal sub-keys)

User Interface

  • \autonameref{<label key>} and \autonameref*{<label key>}
  • 1-arg \HyRef@autonameref@style which controls the extra output style (see test file)

Internals

  • direct dependency: hyperref
  • \HyRef@autonameref and \HyRef@autonamesetref

User Interface

  • \pgfkeys{<key>/.patch={<search>}{<replace>}}
  • \pgfkeyspatchvalue{<key path>}{<search>}{<replace>}

Internals

  • direct dependency: xpatch

User Interface

  • after <key>/.store in=<macro> (or .estore in), handlers .get, .add, .prefix, and .append will act on <macro>, not the key itself

Internals

  • <macro> is stored in new sub-key .@store, which will be cleared by .initial
  • for the above four handlers, .@store has higher precedence than the key itself (set by .initial)

User Interface

  • \printDef{csname}, print definition of \cs{csname}
  • \printAndRunCode{code}

Internals

  • direct dependencies:
    • fvextra
    • xcolor with no package options
  • added
    • \toString

User Interface

  • scope options auto mark and no auto mark
  • styles every auto mark and every auto <shape> mark that accept pin options
  • zero-arg macro \tikzAutoMarkText that controls the mark text
    • In the definition of the above styles and macro, \tikzNodeName and \tikzNodeShape can be used as placeholders of node name and shape, respectively.

Initial values

  • .
    \tikzset{
      every auto mark/.style={
        font=\ttfamily, rotate=45,
        red, anchor=west, pin position=45,
      },
      every auto coordinate mark/.style={
        blue, anchor=east, pin position=180+45,
      },
    }
    \newcommand\tikzAutoMarkText{\tikzNodeName}

Internals

  • Every auto mark is a node pin drawn by
    \node also[pin={[every auto mark/.try, every auto <shape> mark/.try]{\tikzAutoMarkText}}] (\tikzNodeName);
    at the end of every tikzpicture.
    • maybe draw in execute at end path?
  • direct dependency: tikz and etoolbox (for \patchcmd)
  • tikz options used: execute at begin scope and execute at end picture
  • patched: \tikz@node@finish to append node info to \tikzNodeList
  • added:
    • \tikzNodeList, A comma-separated list of elements {<node_name>, <node_shape>}
    • \newif\iftikz@lib@automark@on

User Interface

  • \undefine<cs> and \undefinecs{<csname>} un-define a control sequence locally
  • \uniquecsname expands to a <csname> which tests false in \ifcsname

Internals

  • \@uniquecsname@try and \@uniquecsname@generate

User Interface

  • \defineqcolor{<name>}{<model>}{<spec>}
  • \colorqlet{<name1>}{<name2>}
  • \qcolor{<name>} or \qcolor[<model>]{<spec>}
    • <model> ::= gray | rgb | cmyk

Internal

  • \XC@nametocs{<color name>}

About

small (la)tex files showing features, solutions, and attempts

Topics

Resources

Stars

Watchers

Forks

Languages