• Underlining an Author Name in a Beamer Theme That Forces Uppercase
    by user94293 on December 21, 2025 at 5:22 pm

    I have a Beamer theme that turns the title and authors into uppercase. I'd like to underline the name of the author presenting the slides (in this case, Joe Dane). This however results in the error Improper alphabetic constant., while it works perfectly fine with the default theme. Any suggestions on how to fix this? \documentclass{beamer} \defbeamertemplate*{title page}{My theme}[1][]{% \begin{beamercolorbox}[ignorebg,#1]{title}% {\usebeamerfont{title}\usebeamercolor[fg]{title}% \MakeUppercase\inserttitle\par} \end{beamercolorbox}\par\medskip \begin{beamercolorbox}[ignorebg,#1]{author} {\usebeamerfont{author}\usebeamercolor[fg]{author}% \MakeUppercase\insertauthor\par}% \end{beamercolorbox}} \title{My Title} \author{Jane Doe \and \underline{Joe Dane}} \begin{document} \maketitle \end{document}

  • Font "not loadable: metric data not found or bad"
    by Evan Aad on December 21, 2025 at 5:01 pm

    I have encountered a similar problem to the one described in this TeX StackExchange post, but the solution given there does not work for me. I'm trying to compile a LaTex document that I wrote several years ago, and that used to compile successfully with lualatex. The file and its preamble are very long, but I managed to cut them down to the bare minimum that shows the problem I face while compiling the original document. \documentclass{article} \DeclareFontFamily{U}{mathb}{\hyphenchar\font45} \DeclareFontShape{U}{mathb}{m}{n}{% <-6> mathb5 <6-7> mathb6 <7-8> mathb7 <8-9> mathb8 <9-10> mathb9 <10-12> mathb10 <12-> mathb12 }{} \DeclareSymbolFont{mathb}{U}{mathb}{m}{n} \DeclareMathSymbol{\smsquare}{\mathbin}{mathb}{"05} \usepackage{unicode-math} \setmathfont{STIXTwoMath-Regular.otf} \begin{document} Hello, world! \end{document} When I try to compile the above document, which is stored in the file Main.tex, using the command lualatex Main.tex, the compilation fails, and the following error message appears near the end of Main.log: ! Font \U/mathb/m/n/10=mathb10 at 10pt not loadable: metric data not found or bad. I tried following the suggestion given in this answer to said post, namely to compile Main.tex using pdflatex rather than lualatex, but then I get the following error message in the end of Main.log: ! Package unicode-math Error: Cannot be run with pdftex! (unicode-math) Use XeLaTeX or LuaLaTeX instead. What is the problem, and how can I fix it? Here is a link to the complete log. I tried to add it to this post, but then the post was flagged as too long, and I couldn't save the post.

  • circuitikz: anchoring a circular path symbol
    by cis on December 21, 2025 at 1:02 pm

    How do I choose the anchor so that the line starts exactly at the edge at a path-source to[american current source]? \documentclass[margin=5pt, multi=circuitikz]{standalone} \usepackage{circuitikz} \begin{document} \begin{circuitikz}[] %\ctikzset{bipoles/border margin=0.0}% no effect \draw[] (0,0) to[american current source, o-o, name=GS] (2,0); \draw[->] (GS.north east) -- +(45:1); \end{circuitikz} \end{document}

  • Sharelatex & Overleaf: update all files linked from external projects
    by master_juggler on December 21, 2025 at 12:22 pm

    I am writing a thesis where i link PDFs of my diagrams into my main project. The diagrams are defined and compiled in different projects (limited file number per project, better structuring etc.).Is there a way in sharelatex / overleaf to programmatically update all the linked files in my main document ? Can be locally or API call, doesn't matter....

  • Split long indices with sub-indices in \printindex
    by albert on December 21, 2025 at 10:21 am

    In the question Split long items in \printindex problem posed was how to Split long items in \printindex and the focus was on commands like: \index{src/com/thecompany/theproject/theclass.java@{src/com/thecompany/theproject/theclass.java}} \index{src/com/thecompany/theproject/theclass.java (3cb19654487a12ab9cac6d9d3fc5262bf27ae84f)@{src/com/thecompany/theproject/theclass.java (3cb19654487a12ab9cac6d9d3fc5262bf27ae84f)}} For this there was the answer by @egreg : https://tex.stackexchange.com/a/757354/44119 The problem that was not addressed there was the problem of sub-indices as no real world example existed., but the was a mentioning that maybe something with a ist file could be accomplished. The problem is illustrated in (last index item missing IsLeftAssociative): MWE: \documentclass[twoside]{book} \usepackage{imakeidx} \usepackage{xurl} \makeindex \newcommand{\pathindex}[1]{% \index{#1@\detokenize{\path{#1}}}% } \makeatletter \renewcommand{\@idxitem}{\par\hangindent10pt } \makeatother \begin{document} We need some text \index{AhuntingYard@{AhuntingYard}!theOperatorAtTheTopOfTheOperatorAtackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorAtackHasEqualPrecedenceAndIsLeftAssociative}} \index{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative}!AhuntingYard@{AhuntingYard}} \index{ShuntingYard@{ShuntingYard}!theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative}} \index{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative}!ShuntingYard@{ShuntingYard}} %%\index{net.sourceforge.plantuml.tim.expression.ShuntingYard@{net.sourceforge.plantuml.tim.expression.ShuntingYard}!theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative}} %%\index{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative@{theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative}!net.sourceforge.plantuml.tim.expression.ShuntingYard@{net.sourceforge.plantuml.tim.expression.ShuntingYard}} \printindex \end{document} Some small notes on the MWE: The original lines I commented out by means of %% (to shorten things a bit) The lines with AhuntingYard I manually added for a better idea / view on the problem (in my opinion) it looks like the problem only appears in the main part of the indices, not in the sub-indices. the theOperatorAtTheTopOfTheOperatorStackHasEqualPrecedenceAndIsLeftAssociative is really the name of a function used in the underlying java code Question: how to properly split indices in case of sub-indices (ist file?)

  • \prime \dprime \tprime (not so much) \qprime (looks good) STIX TWO
    by Steven Thomas Hatton on December 21, 2025 at 6:20 am

    The motivation Pfaff, Johann Friedrich: Methodus generalis, aequationes differentiarum partialium, nec non aequationes differentiales vulgares, utrasque primi ordinis inter quotcunque variabiles, complete integrandi The Problem \documentclass[a4paper,10pt]{article} \usepackage{amsmath} \usepackage{mathtools} \usepackage{unicode-math} \setmainfont{STIX Two Text} \setmathfont{STIX Two Math} \newcommand{\tprime}{\char"2034} % ‴ \newcommand{\qprime}{\char"2057} % ⁗ \begin{document} Prime notation: $x^{\prime},x^{\dprime},x^{\tprime},x^{\qprime}$ \end{document} Obviously, the desired result would be for the triple prime to look like the double prime with one more prime, and to look like the quadruple prime with one less prime. This appears to be a feature of unicode since it appears in browsers, in Kate, in Emacs, (differently un-uniform) in xterm. Is there a way to produce a uniform set of prime, double prime, triple prime, quadruple prime using LuaLaTeX? Preferably with STIX Two.

  • Why cannot \par be printed here?
    by User23456234 on December 21, 2025 at 3:15 am

    I ask this question only out of curiousity's sake. I am not actually planning on defining a new command called \cmd because the usual \cs macro has superior syntax. (\cmd<command name, including backslash> and \cs{<command name, omitting backslash>} would print the name of a command.) When defining and testing \cmd, I found a strange error where \cmd\par would issue an error even if \cmd is \long (+m in \NewDocumentCommand). So I think that the argument should accept \par tokens. After some trial and error, I randomly changed \texttt to \ttfamily and the error went away. My question is: Why did this fix the error? I don't understand why \texttt wouldn't work correctly in this case. I provide a MWE below to demonstrate the issue: \documentclass{article} \ExplSyntaxOn \NewDocumentCommand \cmdtesti { +m } { \__module_cmd_test_i:N #1 } \cs_new_protected:Npn \__module_cmd_test_i:N #1 { \group_begin: \ttfamily \token_to_str:N #1 \@ % works correctly when #1 is \par \group_end: } \NewDocumentCommand \cmdtestii { +m } { \__module_cmd_test_ii:N #1 } \cs_new_protected:Npn \__module_cmd_test_ii:N #1 { \texttt { \token_to_str:N #1 \@ } % This gives an error if #1 is \par. } \ExplSyntaxOff \begin{document} \cmdtesti\command % no error \cmdtestii\command % no error \cmdtesti\par % no error % \cmdtestii\par % gives an error % \cmdtestii{\par} % gives an error \end{document}

  • LaTeX: Referring to theorem that shows the title in the front if there is any
    by helloworld142857 on December 21, 2025 at 12:58 am

    I want to have some \fullref that does this: If I write the following: \begin{theorem}\label{thm:a} Some theorem. \end{theorem} \begin{theorem}[Nice Theorem]\label{thm:b} Some theorem. \end{theorem} See \fullref{thm:a} and \fullref{thm:b}. Then I want it to render as See Theorem 1 and Nice Theorem (Theorem 2). Here is what I got from ChatGPT (with mdframed for boxes): \documentclass{article} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsthm} \usepackage{enumitem} \usepackage{etoolbox} \usepackage{mdframed} \usepackage{hyperref} \usepackage{cleveref} \mdfsetup{ linewidth=0.8pt, frametitleaboveskip=8pt, frametitlebelowskip=8pt, innertopmargin=1pt, innerbottommargin=10pt, innerleftmargin=15pt, innerrightmargin=15pt, nobreak=false } \mdtheorem{theorem@base}{Theorem} \mdtheorem{definition@base}{Definition} \mdtheorem{corollary@base}{Corollary} \makeatletter \providecommand*{\theorem@baseautorefname}{Theorem} \providecommand*{\definition@baseautorefname}{Definition} \providecommand*{\corollary@baseautorefname}{Corollary} \makeatother \makeatletter % Theorem environment: if no title, make \nameref empty by setting \@currentlabelname{} \NewDocumentEnvironment{theorem}{o} {% \IfNoValueTF{#1}{% \begin{theorem@base}% \gdef\@currentlabelname{}% <-- no title => empty nameref }{% \begin{theorem@base}[#1]% \gdef\@currentlabelname{#1}% <-- title => nameref is the title }% } {% \end{theorem@base}% } % Definition environment \NewDocumentEnvironment{definition}{o} {% \IfNoValueTF{#1}{% \begin{definition@base}% \gdef\@currentlabelname{}% }{% \begin{definition@base}[#1]% \gdef\@currentlabelname{#1}% }% } {% \end{definition@base}% } % Corollary environment \NewDocumentEnvironment{corollary}{o} {% \IfNoValueTF{#1}{% \begin{corollary@base}% \gdef\@currentlabelname{}% }{% \begin{corollary@base}[#1]% \gdef\@currentlabelname{#1}% }% } {% \end{corollary@base}% } \makeatother \theoremstyle{definition} \newtheorem{example}{Example} \newtheorem{remark}{Remark} \providecommand*{\exampleautorefname}{Example} \providecommand*{\remarkautorefname}{Remark} % fullref: if \nameref is empty -> behave like \autoref % else -> "Title (\autoref)" \makeatletter \DeclareRobustCommand{\fullref}[1]{% \begingroup \protected@edef\fullref@name{\nameref{#1}}% \ifstrempty{\fullref@name}{% \autoref{#1}% }{% \fullref@name\ (\autoref{#1})% }% \endgroup } \makeatother \begin{document} \begin{theorem}\label{thm:a} Some theorem. \end{theorem} \begin{theorem}[Nice Theorem]\label{thm:b} Some theorem. \end{theorem} See \fullref{thm:a} and \fullref{thm:b}. \end{document} Now, everything works fine except that the example above shows See (Theorem 1) and Nice Theorem (Theorem 2). where Theorem 1 has parentheses around it and there seems to be an extra space in front of it, probably because it still treats it as having a title? So what should I do to make it work? Thank you!

  • ConTeXt: Correctly classifying arguments with CLD
    by gxono on December 21, 2025 at 12:06 am

    I have the following MWE: \startluacode local function startenv(keyword, keyval) if keyword[1]:find("=", 1, true) then local cadena = utilities.parsers.array_to_string(keyword, ",") keyval = utilities.parsers.settings_to_hash(cadena) keyword = nil end --TODO end local function stopenv() end interfaces.definecommand("env", { environment = true, arguments = { {"option", "list"}, {"option", "hash"}, }, starter = startenv, stopper = stopenv, }) \stopluacode \starttext \startenv[title={a title}, author={an author}] \input ward \stopenv \startenv[hide][title={another title}] \input lorem \stopenv \stoptext I’d like to be able to correctly assign keyword and keyval depending on which kind of arguments are being used. I know one way would be to check whether the character = is present in keyword (since it gets read as a list), but that feels too verbose to me. Is there a simpler way to handle optional parameters? C:\Users\jonat>context --version mtx-context | ConTeXt Process Management 1.06 mtx-context | mtx-context | main context file: C:/context/tex/texmf-context/tex/context/base/mkiv/context.mkiv mtx-context | current version: 2025.12.05 17:46 mtx-context | main context file: C:/context/tex/texmf-context/tex/context/base/mkxl/context.mkxl mtx-context | current version: 2025.12.05 17:46

  • Vertical size of musixtex staff in table cell
    by Duckslayr on December 20, 2025 at 10:42 pm

    I am working on recreating a scales sheet for my wife. I have a column with the key signatures in it, but I can't get the vertical size under control. Is there a way to either reduce the whitespace above and below the staves, or just adjust the row height to ignore it? \documentclass[12pt]{article} \usepackage[margin=.5in, columnsep=.5in, noheadfoot, nomarginpar]{geometry} \usepackage{graphicx} \usepackage{xpiano} \usepackage{amsmath} \usepackage{musixtex} \usepackage{tabularx} \usepackage{array} \renewcommand{\arraystretch}{1.3} \setlength{\arrayrulewidth}{1.5pt} \setlength{\columnseprule}{0.4pt} \renewcommand\tabularxcolumn[1]{m{#1}} \newcolumntype{K}{>{\hsize=.1\hsize \centering\arraybackslash}X} \newcolumntype{S}{>{\hsize=.2\hsize \centering\arraybackslash}X} \newcolumntype{N}{>{\hsize=.125\hsize \centering\arraybackslash}X} \begin{document} \setinterstaff{1}{18} \LARGE \begin{center} \noindent \begin{tabularx}{\textwidth}{|K|S|N|c c c c c c c c|} \hline \textbf{KEY} & \textbf{Key Signature} & \textbf{$\boldsymbol{\sharp's/\flat's}$} & \multicolumn{8}{c|}{\textbf{Notes in Scale}} \\ \hline C & \begin{music} \setclef10 \generalsignature0 \startextract \endextract \end{music} & $0$ & C & D & E & F & G & A & B & C \\ \hline G & \begin{music} \setclef10 \generalsignature1 \startextract \endextract \end{music} & $1$ $\sharp$ & G & A & B & C & D & E & F$\sharp$ & G \\ \hline D & \begin{music} \setclef10 \generalsignature2 \startextract \endextract \end{music} & $2$ $\sharp$ & D & E & F$\sharp$ & G & A & B & C$\sharp$ & D \\ \hline \end{tabularx} \end{center} \end{document}

  • Curves filled in in 3D plot
    by greg on December 20, 2025 at 5:28 pm

    I am trying to plot the surface $z=x^2-y^2$ with the two curves $(t,0,t^2)$ and $(0,t,-t^2)$, but the curves keep getting filled in, and I can't seem to make it so they appear just as curves in the surface. \documentclass[10pt,t]{beamer} \usepackage{tikz} \usetikzlibrary{calc,arrows.meta,decorations.pathreplacing,positioning,patterns} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \pgfplotsset{ samples=41, samples y=41, filter discard warning=false, unbounded coords=jump, } \begin{document} \begin{frame}%[This is driving me crazy] \begin{tikzpicture}[scale=0.75] \begin{axis}[ title={Graph of $z=x^2-y^2$}, view={45}{30}, width=\linewidth, height=8cm, xlabel={$x$}, ylabel={$y$}, zlabel={$z$}, domain=-2.5:2.5, y domain=-2.5:2.5, samples=31, samples y=31, z buffer=sort, shader=interp, legend style={at={(0.02,0.98)},anchor=north west,draw=none,fill=none,font=\footnotesize}, legend cell align=left ] % surface \addplot3[surf, opacity=0.9] {x^2 - y^2}; \addlegendentry{surface} % x=0 slice \addplot3[ very thick, color=green, variable=t, domain=-2.5:2.5, samples=200 ] (0, t, -t^2); \addlegendentry{$x=0$ slice} % y=0 slice \addplot3[ very thick, color=black, variable=t, domain=-2.5:2.5, samples=200, % samples t=1, t domain=-1:1 ] (t, 0, t^2); \addlegendentry{$y=0$ slice} % tangent plane at (0,0,0): z=0 \addplot3[ surf, shader=flat, draw=none, fill opacity=0.35, domain=-1.5:1.5, y domain=-1.5:1.5, samples=2, samples y=2 ] {0}; \addlegendentry{tangent plane $z=0$} % critical point \addplot3+[only marks, mark=*, mark size=1.5pt] coordinates {(0,0,0)}; \end{axis} \end{tikzpicture} \end{frame} \end{document}

  • Striking out an entire exercise using amsart environments
    by Sebastiano on December 20, 2025 at 1:57 pm

    Suppose I am writing an exercise with a amsart enviroment like the one shown in the MWE below, \documentclass[12pt,a4paper]{article} \usepackage{geometry} \usepackage{amsmath} \usepackage{amssymb} \begin{document} Studiare in $(0, 0)$ la continuità, l'esistenza delle derivate parziali e la differenziabilità della funzione \[ f(x, y) = \begin{cases} \dfrac{x^3 + 3x^2y + y^4}{x^2 + y^2} & \text{se } (x, y) \neq (0, 0) \\ 0 & \text{se } (x, y) = (0, 0). \end{cases} \] Studiamo la continuità in $(0,0)$. Si ha \[ |f(x,y)| = \left| \frac{x^3 + 3x^2y + y^4}{x^2+y^2} \right| \leq |x|+3|y|+|y|^2 \] e quando $(x,y)\to(0,0)$ l'ultima diseguaglianza tende a $0$ e anche la funzione di partenza lo sarà. Quindi \[ \lim_{(x,y)\to(0,0)} f(x,y) = 0 = f(0,0), \] cioè $f$ è continua in $(0,0)$. \end{document} and I want to strike out the entire exercise, while preserving any environments created with amsart, as in the image below. I'm searching something without use tcolorbox (mdframed or similar) using simple commands (without package) to create an "oblique rule" .

  • Split long items in \printindex
    by albert on December 20, 2025 at 1:37 pm

    When having long items in the index these items can run into the next column (or off the page) like shown here: This results from the following MWE: \documentclass[twoside]{book} \usepackage{makeidx} \makeindex \begin{document} We need some text \index{src/com/thecompany/theproject/theclass.java@{src/com/thecompany/theproject/theclass.java}} \index{src/com/thecompany/theproject/theclass.java (3cb19654487a12ab9cac6d9d3fc5262bf27ae84f)@{src/com/thecompany/theproject/theclass.java (3cb19654487a12ab9cac6d9d3fc5262bf27ae84f)}} \index{za0@{za0}} \index{za1@{za1}} \index{za2@{za2}} \index{za3@{za3}} \index{za4@{za4}} \index{za5@{za5}} \index{za6@{za6}} \index{za7@{za7}} \index{za8@{za8}} \index{za9@{za9}} \index{zb0@{zb0}} \index{zb1@{zb1}} \index{zb2@{zb2}} \index{zb3@{zb3}} \index{zb4@{zb4}} \index{zb5@{zb5}} \index{zb6@{zb6}} \index{zb7@{zb7}} \index{zb8@{zb8}} \index{zb9@{zb9}} \index{zc0@{zc0}} \index{zc1@{zc1}} \index{zc2@{zc2}} \index{zc3@{zc3}} \index{zc4@{zc4}} \index{zc5@{zc5}} \index{zc6@{zc6}} \index{zc7@{zc7}} \index{zc8@{zc8}} \index{zc9@{zc9}} \index{zd0@{zd0}} \index{zd1@{zd1}} \index{zd2@{zd2}} \index{zd3@{zd3}} \index{zd4@{zd4}} \index{zd5@{zd5}} \index{zd6@{zd6}} \index{zd7@{zd7}} \index{zd8@{zd8}} \index{zd9@{zd9}} \index{ze0@{ze0}} \index{ze1@{ze1}} \index{ze2@{ze2}} \index{ze3@{ze3}} \index{ze4@{ze4}} \index{ze5@{ze5}} \index{ze6@{ze6}} \index{ze7@{ze7}} \index{ze8@{ze8}} \index{ze9@{ze9}} \printindex \end{document} The question is how can these long items be split like it already does at the space, but e.g. also on the slash or ...? Edit based on the comments with the answer some extra items: \index{a2!q20@{q20}} \index{a2!q21@{q21}} \index{SRCxCOMxTHECOMPANYxTHEPROJECTxTHECLASSlONG!q20@{q20}} \index{a2!srcXcomXthecompanyXtheprojectXtheclassLong@{srcXcomXthecompanyXtheprojectXtheclassLong}} We get in the output: and so we see that: \index{a2!srcXcomXthecompanyXtheprojectXtheclassLong@{srcXcomXthecompanyXtheprojectXtheclassLong}} is OK but \index{SRCxCOMxTHECOMPANYxTHEPROJECTxTHECLASSlONG!q20@{q20}} is not OK.

  • How to restore xindy, supposedly corrupted by recent Windows updates?
    by Igor Kotelnikov on December 20, 2025 at 1:41 am

    I am using \usepackage[xindy]{imakeidx} \makeindex[options=-L russian -C utf8] \makeindex[name=persons2, title=Именной указатель, columns=3 , options=-L russian -C utf8] to generate both subject and name indexes. Commands like \index{частота!круговая} \index[persons2]{Альфвен} write the terms into the PlasmaBook5.idx and persons2.idx files respectively. Next, the commands \printindex \printindex[persons2] located near the end of the book сall the makeindex.exe program directly from the xelatex or lualatex compiler. makeindex.exe generates .ind files on the fly, and the \printindex commands insert them into the text of the PlasmaBook5. Very convenient! Just two months ago, in mid-October, this scheme worked perfectly, but now suddenly the makeindex.exe program stopped generating .ind files with the following error: (D:/Users/KIA/YandexDisk/PlasmaBook5/Common/index2.tex*** - Win32 error 267 (ERROR_DIRECTORY): The directory name is invalid. It's clear that makeindex.exe doesn't find the directory where the .idx file is located, but I don't understand what needs to be changed to fix this problem. I use MikTeX in conjunction with WinEdt. WinEdt is configured to write .idx files to the TeXAux subdirectory. I don't recall changing WinEdt's settings recently. Perhaps a Windows 11 update broke this setup. Update 2025-12-29 It turns out that the trouble comes from xindy. It runs fine when called without arguments: D:\Users\KilledInAction\YandexDisk\PlasmaBook5\TeXAux>texindy.exe usage: texindy.pl [-V?h] [-qv] [-iglr] [-d magic] [-o outfile.ind] [-t log] \ [-L lang] [-C codepage] [-M module] [-I input] [idx0 idx1 ...] GNU-STYLE LONG OPTIONS FOR SHORT OPTIONS: -V / --version -? / -h / --help -q / --quiet -v / --verbose -i / --stdin -g / --german -l / --letter-ordering -r / --no-ranges -d / --debug (multiple times) (supported: script, keep_tmpfiles, markup, level=n) -o / --out-file -t / --log-file -L / --language -C / --codepage -M / --module (multiple times) -I / --input-markup (supported: latex, omega) However, it fails if called with arguments: D:\Users\KilledInAction\YandexDisk\PlasmaBook5\TeXAux>texindy.exe -L russian -C utf8 persons1.idx *** - Win32 error 267 (ERROR_DIRECTORY): The directory name is invalid. D:\Users\KilledInAction\YandexDisk\PlasmaBook5\TeXAux>texindy.exe persons1.idx *** - Win32 error 267 (ERROR_DIRECTORY): The directory name is invalid.

  • How to switch to lining numbers and/or tabular lining numbers in text mode inside a maths environment with Libertinus Math and pdflatex?
    by Eros Jones on December 19, 2025 at 11:32 pm

    I am writing a thesis with upright sans maths and use a lot of fonts and symbols. For this I've declared letters and numbers as symbols, and it works reasonably well. Except that Libertinus has gotten rid of the commands to switch to lining numbers and tabular lining numbers locally: \liningnumsf{...\, \tabularnumsf{\liningfigures{...}} etc. Consider the three points in the following image where I switch to text mode inside maths: numbers are oldstyle, and I wish to make them line up. I think I need a local fix, as it was possible with Libertine, see above. The code: \documentclass{book} % This file shows a configuration for upright sans maths fonts with Libertinus and Libertinus Math \usepackage[LGR,T1]{fontenc} \usepackage[oldstyle,proportional]{libertinus} \usepackage{libertinust1math}% [sansmath] option destroys \upvarphi \usepackage[libertinus,biolinum,greek=up,scale=1]{libgreek} \renewcommand*\ttdefault{lmtt} % The following provides upright sans font for maths, see egreg's answer at https://tex.stackexchange.com/questions/185172/changing-number-font-into-sans-serif \DeclareSymbolFont{sans}{T1}{LibertinusSans-TLF}{m}{n}% For standard lining figures use -LF \SetSymbolFont{sans}{bold}{T1}{LibertinusSans-TLF}{b}{n}% Does not seem to have an effect \DeclareMathSymbol{0}{\mathalpha}{sans}{"30} \DeclareMathSymbol{1}{\mathalpha}{sans}{"31} \DeclareMathSymbol{2}{\mathalpha}{sans}{"32} \DeclareMathSymbol{3}{\mathalpha}{sans}{"33} \DeclareMathSymbol{4}{\mathalpha}{sans}{"34} \DeclareMathSymbol{5}{\mathalpha}{sans}{"35} \DeclareMathSymbol{6}{\mathalpha}{sans}{"36} \DeclareMathSymbol{7}{\mathalpha}{sans}{"37} \DeclareMathSymbol{8}{\mathalpha}{sans}{"38} \DeclareMathSymbol{9}{\mathalpha}{sans}{"39} \DeclareMathSymbol{A}{\mathalpha}{sans}{`A} \DeclareMathSymbol{B}{\mathalpha}{sans}{`B} \DeclareMathSymbol{C}{\mathalpha}{sans}{`C} \DeclareMathSymbol{D}{\mathalpha}{sans}{`D} \DeclareMathSymbol{E}{\mathalpha}{sans}{`E} \DeclareMathSymbol{F}{\mathalpha}{sans}{`F} \DeclareMathSymbol{G}{\mathalpha}{sans}{`G} \DeclareMathSymbol{H}{\mathalpha}{sans}{`H} \DeclareMathSymbol{I}{\mathalpha}{sans}{`I} \DeclareMathSymbol{J}{\mathalpha}{sans}{`J} \DeclareMathSymbol{K}{\mathalpha}{sans}{`K} \DeclareMathSymbol{L}{\mathalpha}{sans}{`L} \DeclareMathSymbol{M}{\mathalpha}{sans}{`M} \DeclareMathSymbol{N}{\mathalpha}{sans}{`N} \DeclareMathSymbol{O}{\mathalpha}{sans}{`O} \DeclareMathSymbol{P}{\mathalpha}{sans}{`P} \DeclareMathSymbol{Q}{\mathalpha}{sans}{`Q} \DeclareMathSymbol{R}{\mathalpha}{sans}{`R} \DeclareMathSymbol{S}{\mathalpha}{sans}{`S} \DeclareMathSymbol{T}{\mathalpha}{sans}{`T} \DeclareMathSymbol{U}{\mathalpha}{sans}{`U} \DeclareMathSymbol{V}{\mathalpha}{sans}{`V} \DeclareMathSymbol{W}{\mathalpha}{sans}{`W} \DeclareMathSymbol{X}{\mathalpha}{sans}{`X} \DeclareMathSymbol{Y}{\mathalpha}{sans}{`Y} \DeclareMathSymbol{Z}{\mathalpha}{sans}{`Z} \DeclareMathSymbol{a}{\mathalpha}{sans}{`a} \DeclareMathSymbol{b}{\mathalpha}{sans}{`b} \DeclareMathSymbol{c}{\mathalpha}{sans}{`c} \DeclareMathSymbol{d}{\mathalpha}{sans}{`d} \DeclareMathSymbol{e}{\mathalpha}{sans}{`e} \DeclareMathSymbol{f}{\mathalpha}{sans}{`f} \DeclareMathSymbol{g}{\mathalpha}{sans}{`g} \DeclareMathSymbol{h}{\mathalpha}{sans}{`h} \DeclareMathSymbol{i}{\mathalpha}{sans}{`i} \DeclareMathSymbol{j}{\mathalpha}{sans}{`j} \DeclareMathSymbol{k}{\mathalpha}{sans}{`k} \DeclareMathSymbol{l}{\mathalpha}{sans}{`l} \DeclareMathSymbol{m}{\mathalpha}{sans}{`m} \DeclareMathSymbol{n}{\mathalpha}{sans}{`n} \DeclareMathSymbol{o}{\mathalpha}{sans}{`o} \DeclareMathSymbol{p}{\mathalpha}{sans}{`p} \DeclareMathSymbol{q}{\mathalpha}{sans}{`q} \DeclareMathSymbol{r}{\mathalpha}{sans}{`r} \DeclareMathSymbol{s}{\mathalpha}{sans}{`s} \DeclareMathSymbol{t}{\mathalpha}{sans}{`t} \DeclareMathSymbol{u}{\mathalpha}{sans}{`u} \DeclareMathSymbol{v}{\mathalpha}{sans}{`v} \DeclareMathSymbol{w}{\mathalpha}{sans}{`w} \DeclareMathSymbol{x}{\mathalpha}{sans}{`x} \DeclareMathSymbol{y}{\mathalpha}{sans}{`y} \DeclareMathSymbol{z}{\mathalpha}{sans}{`z} \usepackage{xurl} \usepackage{nccmath} \usepackage{mathtools} \usepackage{eufrak} \usepackage[mathcal]{euscript} \usepackage[nice]{nicefrac} \usepackage[normalweight=autolight,boldweight=autosemibold,onlysansmath]{mdsymbol} \setlength\parskip{0em plus 0em minus 0em} \thinmuskip=1\thinmuskip \medmuskip=1\medmuskip \thickmuskip=1\thickmuskip \widowpenalty=10000 \clubpenalty=10000 \raggedbottom \begin{document} \mathversion{sans}% For mdsymbol The standard maths font commands of Libertinus T1 Math: \begin{itemize} \item Just with \verb|$...$| (same as with \verb|\textsf{...}|, except the numbers) $1234567890$ $abcdefghijklmnopqrstuvwxyz$ $ABCDEFGHIJKLMNOPQRSTUVWXYZ$ \item With \verb|$\textth{...}$| (replaces \verb|$\mathit{...}$|) $\textth{1234567890}$ $\textth{abcdefghijklmnopqrstuvwxyz}$ $\textth{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \item With \verb|$\mathrm{...}$| $\mathrm{1234567890}$ $\mathrm{abcdefghijklmnopqrstuvwxyz}$ $\mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \item With \verb|$\mathbf{...}$| $\mathbf{1234567890}$ $\mathbf{abcdefghijklmnopqrstuvwxyz}$ $\mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \item With \verb|$\mathsf{...}$| we get the AMS sans font $\mathsf{1234567890}$ $\mathsf{abcdefghijklmnopqrstuvwxyz}$ $\mathsf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \end{itemize} Text mode to get further styles: \begin{itemize} \item With \verb|$\textit{\sffamily...}$| $\textit{\sffamily 1234567890}$ $\textit{\sffamily abcdefghijklmnopqrstuvwxyz}$ $\textit{\sffamily ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \item With \verb|$\textbf{\sffamily...}$| $\textbf{\sffamily 1234567890}$ $\textbf{\sffamily abcdefghijklmnopqrstuvwxyz}$ $\textbf{\sffamily ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \item With \verb|\textbf{...}| we get a font that is a bit bolder than \verb|$\mathbf{...}$| $\textbf{1234567890}$ $\textbf{abcdefghijklmnopqrstuvwxyz}$ $\textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \end{itemize} Further maths: \begin{itemize} \item Sub- and superscripts $17^5, x^2_n$ \item Symbols (from \verb|mdsymbol|) $, ; . ... : < > \otimes\oplus\odot\otimes\subseteq\subset\top\bot\models\frac{2}{3}$ $\exists\forall (x\in X) p\cdot q [ab]+cd\rightarrow\Leftrightarrow\cup\cap\wedge\subsetneq\boxplus \{0,1,2,...\} \geq\times\equiv\dots=\Cup\Cap$ \item Greek (from \verb|libgreek|) $\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\omicron\pi\rho\sigma\varsigma\varvarsigma\tau\upsilon\phi\upvarphi\chi\psi\omega$ $\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\Iota\Kappa\Lambda\Mu\Nu\Xi\Omicron\Pi\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega$ $\boldsymbol{\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\omicron\pi\rho\sigma\varsigma\varvarsigma\tau\upsilon\phi\upvarphi\chi\psi\omega}$ $\boldsymbol{\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\Iota\Kappa\Lambda\Mu\Nu\Xi\Omicron\Pi\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega}$ \item Fraktur (from \verb|eufrak|) $\mathfrak{1234567890}$ $\mathfrak{abcdefghijklmnopqrstuvwxyz}$ $\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ $\boldsymbol{\mathfrak{1234567890}}$ $\boldsymbol{\mathfrak{abcdefghijklmnopqrstuvwxyz}}$ $\boldsymbol{\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}}$ \item Calligraphic (from \verb|euscript|) $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ $\boldsymbol{\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}}$ \end{itemize} \end{document} How can I switch to lining numbers/figures in text locally when I have Libertinus with oldstyle numbers for the body text? There should be a command (or a way, at least), but I can't find it.

  • How to create Tikz figure as the pictrure shown in image
    by Latexfan on December 19, 2025 at 7:17 pm

    I wish to make this figure with Tikz. I have tried but I can't make as in figure. Can you please assist me? \documentclass[tikz,border=10pt]{standalone} \usepackage{tikz} \usetikzlibrary{arrows.meta,3d,calc} \begin{document} \begin{tikzpicture}[ x={(1cm,0cm)}, y={(0.6cm,0.4cm)}, z={(0cm,1cm)}, >=Stealth ] % Axes \draw[->] (0,0,0) -- (4,0,0) node[below left] {$x$}; \draw[->] (0,0,0) -- (0,4,0) node[below right] {$y$}; \draw[->] (0,0,0) -- (0,0,4) node[left] {$z$}; % Origin \node at (0,0,0) [below left] {$O$}; % Bottom region D \fill[blue!15,opacity=0.6] plot[smooth cycle,variable=\t,domain=0:360] ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, 0); \node at (2,2,0) [below] {$D$}; % Boundary C' \draw[blue!70,thick,->] plot[smooth cycle,variable=\t,domain=0:360] ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, 0); \node at (3.8,2,0) {$C'$}; % Vertical dashed lines \foreach \t in {30,110,200,290} { \draw[dashed] ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, 0) -- ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, 2.3); } % Surface S : z = f(x,y) \fill[blue!40,opacity=0.7] plot[smooth cycle,variable=\t,domain=0:360] ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, {2+0.3*sin(\t)}); \node at (1.3,3.2,2.4) {$S$}; \node at (3.2,3.4,2.6) {$z=f(x,y)$}; % Boundary C \draw[blue!80,thick,->] plot[smooth cycle,variable=\t,domain=0:360] ({2+1.6*cos(\t)}, {2+1.1*sin(\t)}, {2+0.3*sin(\t)}); \node at (3.7,2.3,2.2) {$C$}; % Normal vector N \draw[red,very thick,->] (2,2,2.2) -- (2,2,3.6) node[above] {$\mathbf{N}$}; \end{tikzpicture} \end{document} ```

  • How to install elstob_font to texmf-local?
    by Explorer on December 19, 2025 at 6:32 pm

    I want to install the elstob_font to my texmf-local directory. In the TeX folder and elstob-package.pdf in the project, we know that: This package supports Elstob, the variable font for medievalists (and others). The package requires LuaLATEX, since LuaTEX is the only flavor of TEX that supports variable fonts. Elstob is not in CTAN, so you must install the font in your system in order to use it (be sure to get “Elstob,” the variable version, not “ElstobD,” the static font). Place the files elstob.styand elstob.luain the same directory with the document you’re working on. But I want to install this package to my machine. What I have done is as below: Install the Elstob fonts in the .zip file system-wide in Elstob_3.003\Elstob_font\variable\, which could be parsed by fc-list: $ fc-list | grep "Elstob" C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=Bold Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=10pt Bold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=6pt Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=10pt C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=6pt Bold Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=8pt C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=Regular C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=8pt Bold C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=14pt C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=Light C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=Medium C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=SemiBold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=ExtraLight Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=Medium Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=6pt Bold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=14pt Bold Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=10pt Bold Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=14pt Bold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=ExtraBold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=SemiBold Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=Light Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=10pt Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=8pt Bold Italic C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=14pt Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=ExtraLight C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=18pt Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=18pt Bold Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=6pt C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=18pt C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=8pt Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=Bold C:/WINDOWS/fonts/Elstob-Italic.ttf: Elstob:style=ExtraBold Italic C:/WINDOWS/fonts/Elstob.ttf: Elstob:style=18pt Bold put the elstob.sty and elstob.lua to texlive\texmf-local\tex\latex\elstob put the elstob-package.pdf and elstob-package.tex to texlive\texmf-local\doc\fonts\elstob run mktexlsr Then I run with texdoc elstob, the pdf-viewer show elstob-package.pdf as expected. Run the following MWE with lualatex: \documentclass{article} \usepackage{lipsum} \usepackage[ EightPtSemiboldFeatures={Language=English,StylisticSet=2}, EightPtSemiboldSizeFeatures={{size=5,wght=650,opsz=8.5}} ]{elstob} \begin{document} abcdefghijklmnopqrstuvwxyz0123456789 \lipsum[2] \end{document} It complained that: (c:/texlive/2025/texmf-dist/tex/latex/fontspec/fontspec.cfg)))cannot open Elsto b.lua: No such file or directory stack traceback: [C]: in function 'dofile' [\directlua]:1: in main chunk. l.77 mkaltcommands()} In elstob.sty, line 76, that is: \directlua{dofile("Elstob.lua") However, the file name in texlive\texmf-local\tex\latex\elstob is elstob.lua, NOT Elstob.lua. I didn't investigate into it(Because I was not familiar with luatex). Is my installation wrong with any step? Or just the lua script didn't get correct script name?

  • Biblatex custom related format only works once (not for further entries)
    by modallyFragile on December 19, 2025 at 4:45 pm

    I use biblatex to lay out my academic CV. I want to have a custom type for grants/funding I have secured and a custom type for research visits I have been on. I have achieved this -- these are Funding and Visit below. Since the visits are often funding by the grants, I then want to use the biblatex 'related' mechanism to associate one with the other, and print this information in the bibliography. In particular, I want to set the related field in funding entries to the key of a related Visit entry, set the relatedtype field to fundingfor, and then have the information printed in the bibliography. I have achieved all this, except that the related information is only printed for the first Funding entry to be printed. Here's an MWE: \documentclass{article} % Declare new types \begin{filecontents}[overwrite]{\jobname.dbx} % Visit \DeclareDatamodelEntrytypes{visit} \DeclareDatamodelEntryfields[visit]{ date,day,endday,endmonth,endyear,month,year, institution, } % Funding \DeclareDatamodelEntrytypes{funding} \DeclareDatamodelEntryfields[funding]{ date,day,endday,endmonth,endyear,month,year, title } \end{filecontents} % Declare bib formatting \begin{filecontents}[overwrite]{\jobname.bbx} \RequireBibliographyStyle{standard} \NewBibliographyString{fundingfor} \DefineBibliographyStrings{english}{% fundingfor = {funding for} } \newbibmacro{visitto}{% \printtext{visit to\addspace}% \printlist{institution}% } \newbibmacro{related:fundingfor}[1]{% \entrydata{#1}{% \usebibmacro{visitto}% }% } \DeclareBibliographyDriver{visit}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{visitto}% \usebibmacro{finentry}% } \DeclareBibliographyDriver{funding}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \printfield{title}% \newblock{\addspace}% \usebibmacro{related}% \usebibmacro{finentry}% } \end{filecontents} % Examples of new types \begin{filecontents}[overwrite]{\jobname.bib} @Funding{fund_foo, title = {ZBig grant}, relatedtype = {fundingfor}, related = {visit_baz} } @Funding{fund_bar, title = {Large award}, relatedtype = {fundingfor}, related = {visit_qux} } @Funding{fund_boo, title = {Sizeable sum}, relatedtype = {fundingfor}, related = {visit_far} } @Visit{visit_baz, institution = {Impressive place} } @Visit{visit_qux, institution = {Prestigious location} } @Visit{visit_far, institution = {Somewhere else} } \end{filecontents} \usepackage[ bibstyle=\jobname, datamodel=\jobname ]{biblatex} \addbibresource{\jobname.bib} \begin{document} \nocite{*} \printbibliography \end{document} Which produces: The entries are structurally identical and obviously the driver is the same for each, so I would expect that if one prints the related data they all should. If I edit the data so that a different Funding entry sorts first (e.g change 'Big Grant' to 'ZBig Grant') it's still whichever is first to print that gets the related information, and none of the others. Why is the happening, and how can I fix it? TIA!

  • Large bottom margin persists onto next page after changing the geometry
    by Fictional Name on December 19, 2025 at 2:42 pm

    The following is a minimal example to demonstrate a problem I'm having with changing my margins in a book so that one two-page spread has a certain amount of whitespace in the margins, and the next two-page spread has different margins. \documentclass[12pt]{book} \RequirePackage[paperheight=9.0in,paperwidth=6.0in,bindingoffset=0.3in,inner=0.5in,outer=0.5in,bottom=0.5in]{geometry} \usepackage{lipsum} \newenvironment{widermargins}% {\expandafter\newgeometry{outer=1.2in,bottom=1.2in}}% {\restoregeometry} \begin{document} \thispagestyle{empty}\null\newpage % \begin{widermargins} \lipsum[1-4] \end{widermargins} \vfill\pagebreak % \lipsum[5-11] \end{document} Compiled with pdflatex, this generates a five-page document with a two-page spread on pp. 2-3 and another spread on pp. 4-5. The first spread is supposed to have bigger margins than the second spread. What I observe is that on pp. 4-5, the lengths of the pages are unbalanced. The left-hand page still seems to have the bigger bottom margin left over from the first two-page spread. The smaller bottom margin does finally kick in on the right-hand page, so the text column on the right is longer than the one on the left. If anyone can help me to fix this, I would appreciate it very much.

  • Custom 3D line plot in plain tikz and/or luadraw
    by Dr. Manuel Kuehner on December 19, 2025 at 12:30 pm

    Disclaimer This question is a bit of "do it for me" but there is a histrory behind it, see this question. User Jasper offered me a solution without using pgfplots. I plan to add a bounty as soon as it is possible. Question I want to create diagram with a 3D line plots. The main feature is to have several x axes that share the same y axis. Each x axis has its own F (or z) axis. There are only data points on specific y values (in the example below at +30, +15, 0, -15). In addition, the y axis is reversed (+ and - direction reversed). I need a grid in each F-x plane. Important ist also, that all F axes share the same min and max. Each axis should have a label and the diagram should have a title. The data is given in separate csv files, see example below. The MWE contains the data and plots the data (for testing) using pgfplots. Goal: The goal is to have a plain tikz solution and maybe in addition, a solution based on luadraw or lua-tikz3dtools respectively. I am looking for a easy-to-use custom interface for my plot task. If the result looks as it is created with pgfplots, then I am happy. S!#i, I forgot a key feature (not shown in the hand drawing) In addition to the x-F plots described above, there is ONE plot in the y-F plane (= from left to right). This works, because all F axes share the same min and max. \begin{filecontents*}{y_F_data.csv} y,F -15,20 -14,8 30,-4 \end{filecontents*} \documentclass{article} \usepackage{pgfplots} % ------------------------------- \begin{filecontents*}{x_zero.csv} x,F -30,12 -29,8 30,-4 \end{filecontents*} \begin{filecontents*}{x_neg_one.csv} x,F -30,12 -29,8 30,-4 \end{filecontents*} \begin{filecontents*}{x_pos_one.csv} x,F -30,12 -29,8 30,-4 \end{filecontents*} \begin{filecontents*}{x_pos_two.csv} x,F -30,12 -29,8 30,-4 \end{filecontents*} % ------------------------------- \begin{document} \begin{tikzpicture} \begin{axis}[ axis lines = center, title = {$x_0$}, xlabel = {$x_0$}, ylabel = {$F_0$}, xmin = -30, xmax = 30, ymin = -100, ymax = 100, ] \addplot table [x=x, y=F, col sep = comma] {x_zero.csv}; \end{axis} \end{tikzpicture} \begin{tikzpicture} \begin{axis}[ axis lines = center, title = {$x_{-1}$}, xlabel = {$x_{-1}$}, ylabel = {$F_{-1}$}, xmin = -30, xmax = 30, ymin = -100, ymax = 100, ] \addplot table [x=x, y=F, col sep = comma] {x_neg_one.csv}; \end{axis} \end{tikzpicture} \begin{tikzpicture} \begin{axis}[ axis lines = center, title = {$x_{1}$}, xlabel = {$x_{1}$}, ylabel = {$F_{1}$}, xmin = -30, xmax = 30, ymin = -100, ymax = 100, ] \addplot table [x=x, y=F, col sep = comma] {x_pos_one.csv}; \end{axis} \end{tikzpicture} \begin{tikzpicture} \begin{axis}[ axis lines = center, title = {$x_{2}$}, xlabel = {$x_{2}$}, ylabel = {$F_{2}$}, xmin = -30, xmax = 30, ymin = -100, ymax = 100, ] \addplot table [x=x, y=F, col sep = comma] {x_pos_two.csv}; \end{axis} \end{tikzpicture} \end{document}

  • Combine numbers from custom commands into a range
    by taiwan12 on December 18, 2025 at 11:40 pm

    I’m defining datas in LaTeX with a custom command that stores both a label and a number: \documentclass{article} \usepackage{parskip} \newcommand{\data}[3]{% \expandafter\newcommand\csname #1\endcsname[1][]{#2##1}% \expandafter\newcommand\csname #1Number\endcsname{#3}% } \newcommand{\getnumber}[1]{% \mbox{\textbf{(\csname #1Number\endcsname)}}% } \begin{document} \data{tempA}{aaa}{1} \data{tempB}{bbb}{2} \data{tempC}{ccc}{3} \data{tempD}{ddd}{4} \data{tempE}{eee}{5} \data{tempF}{fff}{6} Data: \tempA \newline Number: \getnumber{tempA} \end{document} For a single compound, \getnumber{tempA} outputs (1). Now I want to create a command that takes a list of compound names and outputs a range summary of their numbers. For example: \getnumberrange{tempA,tempB,tempC,tempF} % should produce (1-3,6) I’m not sure how to iterate over a list of command names, retrieve their numbers, and compress consecutive numbers into ranges. How can I implement this in LaTeX?

  • How to set Biolinum (sans serifs font) as default maths font in upright shape with pdflatex?
    by Eros Jones on December 18, 2025 at 9:36 pm

    I'm writing a thesis with loads of maths. The body text is set in Libertine (that is, with serifs), and all maths is set in Biolinum (meaning sans serifs) and upright. To make writing and reading the source code easier, and to have proper maths kerning in particular, I would like to set Biolinum in upright shape as the default maths font. I use libertinust1math already. The MWE explains it: \documentclass{article} \usepackage[LGR,T1]{fontenc} \usepackage[oldstyle,proportional,ttscale=0.875]{libertine} \renewcommand*\ttdefault{lmtt} \usepackage{libertinust1math} \usepackage[libertinus,biolinum,greek=up,scale=1]{libgreek} \usepackage[normalweight=autolight,boldweight=autosemibold,onlysansmath]{mdsymbol} \usepackage{mathtools} \begin{document} \mathversion{sans} \begin{enumerate} \item \verb|$ChS_{(M)}^2$| should look like $\textsf{ChS}_{(\textsf{M})}^\liningnumsf{2}$. \item \verb|$\mathit{ChS}_{(\mathit{M})}^2$| should look like $\textit{\sffamily ChS}_{(\textit{\sffamily M})}^\liningnumsf{2}$, just with the proper maths kerning, of course. \item \verb|$\mathnormal{ChS}_{(\mathnormal{M})}^2$| as well as \verb|$\mathsf{ChS}_{(\mathsf{M})}^2$| should look like $\textsf{ChS}_{(\textsf{M})}^\liningnumsf{2}$ again (same as first line). \item \verb|$\mathbf{ChS}_{(\mathbf{M})}^2$| should look like $\textbf{\sffamily ChS}_{(\textbf{\sffamily M})}^\liningnumsf{2}$. \item \verb|$\mathbf{\rmfamily ChS}_{(\mathbf{\rmfamily M})}^\mathrm{2}$| should look like $\textbf{\rmfamily ChS}_{(\textbf{\rmfamily M})}^\liningnums{2}$. \item \verb|$\mathrm{ChS}_{(\mathrm{M})}^\mathrm{2}$| should look like $\textrm{ChS}_{(\textrm{M})}^\liningnums{2}$. \end{enumerate} Numbers 1--4 are Biolinum (meaning \textit{sans serifs}). Numbers 5--6 are Libertine (meaning \textit{with serifs}). \end{document} I suspect this can perhaps be done using the \SetMathAlphabet command, like in \SetMathAlphabet{\mathrm}{normal}{\encodingdefault}{cmss}{\sfdefault}{n} \SetMathAlphabet{\mathbf}{bold}{\encodingdefault}{cmss}{\bfdefault}{n} but I don't know how to do it exactly. Important: I use pdflatex and cannot switch. PS >> The solution is modifying \usepackage{libertinust1math} to \usepackage[sansmath]{libertinust1math} in egreg's answer below. Then also the numbers are sans. Throughout. But one can switch the numbers back to serifs for the \mathrm style with the Tex command \rm. Alright for me as I (almost) don't use serifs in maths mode. UPDATE >> The sansmath option isn't actually a solution because it destroys the \upvarphi that I need. Furthermore: I have two pieces of news, one good, one bad. They both concern egreg's answer (now updated) in its previous state. First the good one. The code \DeclareSymbolFont{letters}{T1}{LibertinusSans-TLF}{m}{n} \DeclareMathAlphabet{\mathit}{T1}{LibertinusSans-TLF}{m}{it} \DeclareMathAlphabet{\mathsf}{T1}{LibertinusSans-TLF}{m}{n} \DeclareMathAlphabet{\mathbf}{T1}{LibertinusSans-TLF}{b}{n} \DeclareMathAlphabet{\mathrm}{T1}{LibertinusSerif-TLF}{m}{n} does work nicely and produces the required outcome, so that one has upright sans maths and can switch between variants as well. However, the sans numbers come from a different font. They look rather good, austere, much better in any case than AMS sans numbers. But they're still not Libertinus Sans. I've found the solution at Changing Number Font Into Sans Serif (by egreg), and applied it. Numbers in maths mode are then from Libertinus Sans. However, and this is the bad news, many symbols don't work anymore with the above code added. MWE, updating the MWE from above: \documentclass{article} \usepackage[LGR,T1]{fontenc} \usepackage[oldstyle,proportional]{libertinus} \usepackage{libertinust1math}% [sansmath] option destroys \upvarphi \usepackage[libertinus,biolinum,greek=up,scale=1]{libgreek} \usepackage{mathtools} \usepackage{amssymb} \renewcommand*\ttdefault{lmtt} \DeclareSymbolFont{letters}{T1}{LibertinusSans-TLF}{m}{n} \DeclareMathAlphabet{\mathit}{T1}{LibertinusSans-TLF}{m}{it} \DeclareMathAlphabet{\mathsf}{T1}{LibertinusSans-TLF}{m}{n} \DeclareMathAlphabet{\mathbf}{T1}{LibertinusSans-TLF}{b}{n} \DeclareMathAlphabet{\mathrm}{T1}{LibertinusSerif-TLF}{m}{n} % the following provides the correct sans numbers, see egreg's answer at https://tex.stackexchange.com/questions/185172/changing-number-font-into-sans-serif \DeclareSymbolFont{sfnumbers}{T1}{LibertinusSans-TLF}{m}{n} \SetSymbolFont{sfnumbers}{bold}{T1}{LibertinusSans-TLF}{b}{n} \DeclareMathSymbol{0}\mathalpha{sfnumbers}{"30} \DeclareMathSymbol{1}\mathalpha{sfnumbers}{"31} \DeclareMathSymbol{2}\mathalpha{sfnumbers}{"32} \DeclareMathSymbol{3}\mathalpha{sfnumbers}{"33} \DeclareMathSymbol{4}\mathalpha{sfnumbers}{"34} \DeclareMathSymbol{5}\mathalpha{sfnumbers}{"35} \DeclareMathSymbol{6}\mathalpha{sfnumbers}{"36} \DeclareMathSymbol{7}\mathalpha{sfnumbers}{"37} \DeclareMathSymbol{8}\mathalpha{sfnumbers}{"38} \DeclareMathSymbol{9}\mathalpha{sfnumbers}{"39} \begin{document} $\alpha\beta\pi\Pi\Delta\phi\upvarphi$ --- works $12345\text{text}67890abcDEF$ --- works $\mathnormal{12345\text{text}67890abcDEF}$ --- works $\mathsf{12345\text{text}67890abcDEF}$ --- works $\mathrm{12345\text{text}67890abcDEF}$ --- works $\mathbf{12345\text{text}67890abcDEF}$ --- works $\mathit{12345\text{text}67890abcDEF}$ --- works $\exists\forall (X\in x) [ab]+cd\rightarrow\Leftrightarrow\cup\cap\wedge\subsetneq\boxplus \{\,\} \geq\times\equiv\dots=\Cup\Cap$ --- works (although the \verb|\exists| and \verb|\forall| operators are rather ugly) \medskip $, ; . ... : < > \otimes\oplus\odot\otimes\subseteq\subset\top\bot\models$ --- \textbf{ERROR} \medskip The examples below all work: \begin{enumerate} \item \verb|$ChS_{(M)}^2$| $ChS_{(M)}^2$ should look like $\textsf{ChS}_{(\textsf{M})}^{2}$. \item \verb|$\mathit{ChS_{(M)}^\mathnormal{2}}$| $\mathit{ChS_{(M)}^\mathnormal{2}}$ should look like $\textit{\sffamily ChS}_{(\textit{\sffamily M})}^{2}$ (with proper maths kerning) \item \verb|$\mathnormal{ChS_{(M)}^2}$| $\mathnormal{ChS_{(M)}^2}$ should look like $\textsf{ChS}_{(\textsf{M})}^{2}$ \item \verb|$\mathbf{ChS_{(M)}^2}$| $\mathbf{ChS_{(M)}^2}$ should look like $\textbf{\sffamily ChS}_{(\textbf{\sffamily M})}^{2}$. \item \verb|$\mathrm{ChS_{(M)}^2}$| $\mathrm{ChS_{(M)}^2}$ should look like $\textrm{ChS}_{(\textrm{M})}^{\rm 2}$. \end{enumerate} \end{document} (I cannot add an image of the compilation result; the button is greyed out.) Comma becomes semicolon, full stop becomes colon, the less and greater symbols are wrong, and a lot of other symbol commands produce various accented letters. Curiously, if you look very closely at the semicolons and colons you will see that they are ever so slightly different between comma/semicolon and full stop/colon. I have tried to remedy this on my own, but no success so far.

  • How to automatically generate inline a), b), c) labels in LaTeX figure captions?
    by taiwan12 on December 18, 2025 at 6:25 pm

    I'm trying to create a LaTeX figure with a caption that lists multiple subitems inline, separated by semicolons, like this: \documentclass[11pt]{report} \usepackage{geometry} \usepackage{graphicx} \begin{document} \begin{figure}[h!] \centering \includegraphics[width=0.5\textwidth]{example-image-a} \caption{ \textbf{a)} aaa; \textbf{b)} bbb; \textbf{c)} ccc. } \label{fig:example} \end{figure} \begin{figure}[h!] \centering \includegraphics[width=0.5\textwidth]{example-image-b} \caption{ \textbf{a)} ddd; \textbf{b)} eee; \textbf{c)} fff. } \label{fig:example} \end{figure} \end{document} This works, but the labels (a), b), c)) are written manually. I would like to automatically generate these labels in the caption, so that if I add more items, the lettering continues (d), e), etc.), all in one line, separated by semicolons, and the last item ends with a period instead of a semicolon. My goal: Automatic a), b), c) …. Inline, separated by ; with a final . at the end. Compatible with \caption.

  • Compile & View fails although pdflatex runs successfully
    by Saïd Maanan on December 18, 2025 at 6:10 pm

    I am using TeXstudio 4.9.0 on Fedora Linux. Say I have the following file: \documentclass[12pt,a4paper]{article} \usepackage[margin=2cm]{geometry} \title{Title} \author{Author} \begin{document} \maketitle Hello World! \end{document} When I press F6 (Compile), compilation succeeds: Process started: pdflatex -synctex=1 -interaction=nonstopmode "test".tex Process exited normally But when I press F5 (Build & View), TeXstudio reports the following: Error: Could not start the command: Compile & View So pdflatex clearly runs and produces the PDF, but TeXstudio fails at the view stage. My Build configuration is as follows: With the hidden commands shown it looks as follows: And my Commands configuration is as follows: Any help addressing this issue would be appreciated. Note 1: I started having this problem when I activated version control: Note 2: TeXstudio now works normally again after clicking Options > Restore Default Settings.

  • Create macro with named arguments
    by user1724887 on December 18, 2025 at 1:30 pm

    I am new to latex. I need to create a text that has a bunch of entries that have the same structure, so I thought I would create a macro for it. However there are 7 moving parts, so it needs 7 arguments. It's becoming hard to read, hard to know which argument number I'm on. So I want to name the arguments (not so much in the definition of the macro, but at least when it's used). I tried searching on the net, but found no easy solution, and it gets very quickly highly unreadable (using xparse and things like that) for non-latex experts. I found out, using luatex, I can include lua code, which seems way more readable. So I switched to luatex. The usage that I am proposing is as follows. I'm open to other usages, but it should be at least easily readable, prone to extra spaces (and newlines), and close to the latex syntax. values can themselves have newlines, and latex code (such as \textbf). curly braces (the character ending the value) should be able to be escaped in the values. \myfunction { arg1 = {value1}, arg2 = {value2}, arg3 = {value3}, arg4 = {value4}, arg5 = {value5}, arg6 = {value6}, arg7 = {value7} } The way I tried to parse it is as follows. \documentclass{article} \usepackage{luacode} \begin{luacode} function parse_args(input) local result = {} local pattern = '(%w+)%s*=%s*{%s*([^}]+)%s*}' for key, value in input:gmatch(pattern) do result[key] = value end return result end function my_function(input) local args = parse_args(input) for key, value in args do tex.print(key .. " : " .. value .. "\\") end \end{luacode} \newcommand{\myfunction}[1]{% \directlua{ my_function([===[#1]===]) }% } \begin{document} \myfunction { arg1 = {value1}, arg2 = {value2}, arg3 = {value3}, arg4 = {value4}, arg5 = {value5}, arg6 = {value6}, arg7 = {value7} } \end{document} This doesn't work, I'm getting weird issues, it seems to closing bracket in the pattern string is interpreted as latex code and I get a closing bracket error within the string. I'm open to either making my code work with minimal changes, or to provide a whole other solution, if it's elegant and easy to read.

  • How to adjust a table with fractions?
    by karry on December 18, 2025 at 11:51 am

    \begin{table}[ht] \centering \setlength{\extrarowheight}{10pt} \setlength{\arraycolsep}{10pt} % \begin{tabular}{ |c|c|c|c|c|c| } \hline & $\bm{II}$ & $\bm{IX}$ & $\bm{ZI}$ & $\bm{ZX}$ & \textbf{others} \\ \hline $\bm{II}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $-\frac{1}{4}$ & $0$ \\ \hline $\bm{IX}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $-\frac{1}{4}$ & $0$ \\ \hline $\bm{ZI}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $\frac{1}{4}$ & $-\frac{1}{4}$ & $0$ \\ \hline $\bm{ZX}$ & $-\frac{1}{4}$ & $-\frac{1}{4}$ & $-\frac{1}{4}$ & $\frac{1}{4}$ & $0$ \\ \hline \textbf{others} & $0$ & $0$ & $0$ & $0$ & $0$ \\ \hline \end{tabular} \end{table} This is my code, but it shows that: This is not the table I want. All the fractions are not centered. I've tried many methods but none of them worked. How can I adjust it to make the table more attractive?

  • Check if a macro internally contains inner macros
    by tobiasBora on December 18, 2025 at 10:52 am

    To make my library (robust-externalize) more robust, I need to check if a list of macro contains internal macros like \foo@bar (I may also need to do that for latex3 macros, but let's start simple). I could parse the string directly, but first I may have false positive (if an @ symbol is present, but not in a macro) and it might not be super efficient and I need super-fast code since this will be called a lot. Is it possible instead to directly check this property on the list of macro itself? MWE: \documentclass[]{article} \begin{document} \def\mylistofmacrosA{Hey \iam a normal list of \foomacro.} \def\mylistofmacrosB{Hey \iam a normal list of \foomacro with the @ symbol as a letter.} \makeatletter \def\mylistofmacrosC{Hey \iam a list of \foo@macro that contain the at symbol inside macros.} \makeatother \NewDocumentCommand{\isUsingInternalMacros}{m}{ TODO: Write "Yes" or "No" } \isUsingInternalMacros{\mylistofmacrosA} % => No \isUsingInternalMacros{\mylistofmacrosB} % => No \isUsingInternalMacros{\mylistofmacrosC} % => Yes \end{document}

  • Removing gap between bar and x-axis line in bar plot
    by user242399 on December 18, 2025 at 8:40 am

    How can I make the bars start at the horizontal line, instead of having a small gap between the bar and the line? (I do not need to keep the 0 mark at the y-axis.) \documentclass{article} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{width=12cm,compat=1.9} \begin{document} \begin{tikzpicture} \begin{axis}[ ymin=0, x tick label style={ /pgf/number format/1000 sep=}, enlargelimits=0.05, legend style={at={(0.5,-0.1)}, anchor=north,legend columns=-1}, ybar interval=0.7, ] \addplot[color=darkgray,fill=lightgray] coordinates { (1990,638) (1980,899) (1970,894) (1960,808) (1950,769) (1940,714) (1930,644) (1920,598) (1910,536) (1900,420)}; \end{axis} \end{tikzpicture} \end{document}

  • How to use \setcapwidth with \maxof from calc in TeXLive 2025?
    by mforbes on December 18, 2025 at 7:51 am

    As of TexLive 2025, I started running into an error with the following MnWE: \documentclass{scrartcl} \usepackage{calc} \setcapwidth{\maxof{\textwidth}{0.8\textwidth}} \begin{document} This fails with texlive 2025. \end{document} /Volumes/Data/apps/texlive/2025/texmf-dist/tex/latex/koma-script/typearea.sty) ) (/Volumes/Data/apps/texlive/2025/texmf-dist/tex/latex/tools/calc.sty) ! Missing number, treated as zero. <to be read again> \maxof l.5 ...capwidth{\maxof{\textwidth}{0.8\textwidth}} This seems to be related to a switch to LaTeX3-style command definitions. A workaround is to precompute the value before passing it to \setcapwidth. Is there a better solutions? \documentclass{scrartcl} \usepackage{calc} \setlength{\dimen255}{\maxof{\textwidth}{0.8\textwidth}} \setcapwidth{\dimen255} \begin{document} This works. \end{document}

  • Is it possible to use the STY file to set table formats?
    by jeffbiss on December 17, 2025 at 7:38 pm

    First, I find the LaTeX documentation lacking, in this case Tabularray Typeset Tabulars and Arrays with LATEX3. The issue as to whether I could preset certain table formats in a STY file is not covered. I am trying to setup my LaTeX template such that users who are not familiar with LaTeX, such as Word users, will find it easier to use. One thing that I thought that I could do is to preset certain formats in my STY file but I am having no such luck. I used the code, with some extras, shown on page 39 of 222 of Tabularray Typeset Tabulars and Arrays with LATEX3 in my STY file: %test \NewTblrTheme{fancy}{ \SetTblrStyle{firsthead}{bg=acornBlue, fg=white, font=\bfseries} \SetTblrStyle{firstfoot}{fg=blue2} \SetTblrStyle{middlefoot}{\itshape} \SetTblrStyle{caption-tag}{acornBlue} } I used a small code segment from their example in my TEX file (it references the STY file: \usepackage{controls}): \begin{longtblr}[ theme = fancy, caption = {A Table}, entry = {Short Caption}, label = {tblr:test}, note{a} = {It is the first footnote.}, note{$\dag$} = {It is the second footnote.}, remark{Note} = {Some general note}, remark{Source} = {Made up by myself}, ]{ colspec = {XXX}, width = 0.85\linewidth, rowhead = 1, rowfoot = 1, row{odd} = {gray9}, row{even} = {brown9}, row{1} = {acornBlue}, row{Z} = {blue7}, } \hline Head & Head & Head \\ \hline Alpha & Beta & Gamma \\ \hline Phi & Chi & Psi \\ \hline Foot & Foot & Foot \\ \hline \end{longtblr} This produces the following result: I realized that the formatting, cell colors, are overriding that specified in the STY file, so I delete them: \begin{longtblr}[ theme = fancy, caption = {A Table}, entry = {Short Caption}, label = {tblr:test}, note{a} = {It is the first footnote.}, note{$\dag$} = {It is the second footnote.}, remark{Note} = {Some general note}, remark{Source} = {Made up by myself}, ]{ colspec = {XXX}, width = 0.85\linewidth, rowhead = 1, rowfoot = 1, } \hline Head & Head & Head \\ \hline Alpha & Beta & Gamma \\ \hline Phi & Chi & Psi \\ \hline Foot & Foot & Foot \\ \hline \end{longtblr} and recompile from scratch and get the following reult: It appears that the STY file cannot be used to preset certain formats that would then free my users from having to do that for every table that they create. I tried changing \SetTblrStyle{firsthead} to: \SetTblrStyle{rowhead} and SetTblrStyle{row{1}} but got the same result. So, is the STY file supposed to allow me to preset certain table cell formats, such as bg and fg colors, etc.?