Hot
- Is it possible simplify this lualatex code?by xcn on January 23, 2026 at 8:39 am
The following code is used to retrieve and round a variable defined via \directlua. Is it possible to remove the luaround function and replace {\IfValueTF{#1} {luaround(#2, #1)} {#2}} with something like {\IfValueTF{#1} {("%." .. #1 .. "f"):format(#2)} {#2}}? \documentclass[12pt]{article} \usepackage{luacode} \begin{luacode*} function luaround(x, n) return string.format('%.' .. n .. 'f', x ) end \end{luacode*} \NewExpandableDocumentCommand{\usevar}{om}{% \directlua{tex.sprint(% {\IfValueTF{#1} {luaround(#2, #1)} {#2} } % IfValueTF )} } \begin{document} \directlua{ x=0.345 y=2 } \usevar[2]{x} \end{document}
- Having trouble getting \starttextbackground to do anythingby Gary on January 23, 2026 at 5:02 am
I'm trying to get a frame that spans a page break. According to the description of \startframedtext While this is a very powerful way to add decorations to a bit of text, note that framedtexts do not break across pages. See \starttextbackground for a similar environment that will break across pages. Perhaps, I'm not understanding what goes in the [name] part of the command, but I cannot get it to do anything. Would you please point me to what I'm failing to do? Thank you. The \framed and \startframedtext both respond in the example below, but the following two attempts of \starttextbackground do not. https://wiki.contextgarden.net/Command/setuptextbackground \starttext \framed[ frame=on, rulethickness=3pt, align=left] { Hello } \startframedtext[left][ frame=on, rulethickness=3pt, ] Hello \par Hello \stopframedtext % While this is a very powerful way to add decorations to a bit of text, % note that framedtexts do not break across pages. See \starttextbackground % for a similar environment that will break across pages. \starttextbackground[BG][ state=start, location=text, background=color, backgroundcolor=blue, frame=on, rulethickness=3pt, ] Hello \par Hello \stoptextbackground \setuptextbackground[BG][ state=start, location=text, background=color, backgroundcolor=blue, frame=on, rulethickness=3pt, ] \starttextbackground[BG] Hello \par Hello \stoptextbackground \stoptext
- Making messy notes with LaTeXby Edward Doolittle on January 23, 2026 at 2:57 am
There is a lot of information on how to make beautiful documents with LaTeX. However, I am thinking about setting up a note taking workflow and I purposely want to make things look messy. I suppose what I want to signal is that rough notes look messy, and that as I develop ideas into papers, as the narrative and reasoning get stronger and better, I can improve the aesthetics, so that beautiful content looks beautiful and rough content looks rough. What sort of settings do you all recommend for messy LaTeX output? I'm thinking bad line breaks, bad page breaks, ragged margins, poor or perhaps just thoughtless placement of floats, different fonts/colours for different environments (and even random switches in font/colour, within certain parameters ... the notes should still be readable, of course). I would like to mimic a "messy aesthetic" for note taking, which is easy enough to do with pen and paper. Marginal notes rotated. I'm sure there are hundreds of possibilities. It might be an interesting project to think of a spectrum, most messy look for most messy thinking, through some mid-range mess for improved thinking, eventually to most beautiful for most well-thought out and correct thinking. I plan to use Emacs org-mode or org-roam (which is already well on its way in the mess category 🙂 ) with export to LaTeX and then to PDF. But I also use pure LaTeX regularly.
- Is it possible to style (via command options) a specific line in an itemized list?by Gary on January 23, 2026 at 2:40 am
I'm trying to use the before option of \setupitemize but do not know how to determine the variable to test against. How can I determine what #1: \fi #2: \strc_itemgroups_tag_start_group translate to that can be used in the \doifelsevalue? Or is there a better method? So far, all I can do is change the color of all or none of the items. Thank you. % \define[2]\MyCmd{% % \type{##1: #1} % \type{##2: #2} % } % Result is: #1: \fi #2: \strc_itemgroups_tag_start_group \startTEXpage \setupitemize [1] % level of itemization [packed] [margin=no, distance=2em, stopper=, left={Step }, right={:}, leftmargin=18mm, before=\doifelsevalue{structurenumber}{5}{\setupcolors[textcolor=darkred]}{}, %MyCmd ] \startitemize[n] \startitem Title of first item step \stopitem \startitem Title of second item step \stopitem \startitem Title of third item step \stopitem \startitem Title of fourth item step \stopitem \startitem Title of fifth item step \stopitem \startitem Title of sixth item step \stopitem \startitem Title of seventh item step \stopitem \stopitemize \stopTEXpage
- Converting a LaTeX package to MathJaxby karlh on January 23, 2026 at 1:11 am
I know that MathJax is a not-entirely-faithful subset of TeX, and that converting packages from LaTeX to MathJax is non-trivial and involves JavaScript. The MathJax documentation does exist, but it is difficult to parse for someone not immersed in it (which is common). It is also not obvious what one needs to do to implement a particular TeX macro so it works in MathJax. Can anyone recommend a "walk-through," example, or good description of how to translate a LaTeX package into a MathJax extension?
- Shuffle the puzzle pieces in TikZ interactive puzzle game (based on this TeX.SX project)by fsbmat on January 23, 2026 at 12:59 am
I’ve been working on a variation of the interactive puzzle from this excellent post on TeX StackExchange: 🔗 The TikZ Game Package – a TeX.SX Project ❓Goal I'd like to shuffle the pieces of the puzzle at the start (instead of them being in order) and still keep the interactive movement functionality working (i.e. clicking tiles to move them like a sliding puzzle). ✅ What I have working The puzzle layout builds correctly using TikZ, ocgx2, and media9. I implemented a manual shuffle using a LaTeX macro (\ShuffleIndex) to define the tile order. The initial view of the puzzle shows the image shuffled correctly. ❌ What is broken The JavaScript interaction no longer works after applying the shuffle. Clicking on the tiles gives an error: ReferenceError: onButtonClick is not defined It seems the function is not visible globally or the OCGs are not properly indexed. 💡 What I'm asking Would anyone be able to: Help fix the JavaScript so it works with the shuffled layout? Or alternatively — provide a working example based on the original post, but with the puzzle pieces already shuffled at start? 📎 What I’ve tried Here’s my current version (almost working, but with JS errors): \documentclass[tikz,margin=1mm]{standalone} \usepackage{xsavebox} \usepackage[tikz]{ocgx2} \usepackage{media9} \usepackage{multido} \usepackage{xcolor}\pagecolor{gray} \usepackage{multido} \usepackage{ifluatex} \ifluatex\def\pdfpageattr{\pdfvariable pageattr}\fi \usepackage{tikzmarmots} % imagem base \begin{xlrbox}{Image} \begin{tikzpicture} \useasboundingbox (0,0) rectangle (4.4,4.4); \node at (2.2,2.2) {\tikz\marmot[scale=2.1];}; \end{tikzpicture} \end{xlrbox} % peças do puzzle \multido{\nX=0+1.1,\iI=0+1}{4}{% \multido{\nY=3.3+-1.1,\iJ=0+1}{4}{% \ifnum\numexpr\iI+\iJ\relax>0 \begin{xlrbox}{Image.\the\numexpr\iI+\iJ*4\relax} \begin{tikzpicture} \clip (\nX,\nY) rectangle ++(1.1,1.1); \node[anchor=south west,inner sep=0pt] at (0,0) {\theImage}; \end{tikzpicture} \end{xlrbox} \fi } } \newcommand\MyStatus[2]{\ifnum#1=#2 visible\else invisible\fi} % JavaScript \pdfpageattr{ /AA << /O << /S/JavaScript /JS ( var tile=[], oldTile=[]; for(var i=0;i<4;i++){ tile[i]=[]; oldTile[i]=[]; for(var j=0;j<4;j++){ tile[i][j]=[]; oldTile[i][j]=i+j*4-1; } } var ocg=this.getOCGs(this.pageNum); for(var k in ocg){ var n=ocg[k].name.split('.'); tile[n[0]][n[1]][n[2]-1]=ocg[k]; } var si=0,sj=0; function onButtonClick(i,j){ if(si==i && sj!=j){ for(var y=sj;y!=j;sj<j?y++:y--){ if(y!=sj) tile[i][y][oldTile[i][y]].state=false; oldTile[i][y]=oldTile[i][sj<j?y+1:y-1]; tile[i][y][oldTile[i][y]].state=true; } } else if(sj==j && si!=i){ for(var x=si;x!=i;si<i?x++:x--){ if(x!=si) tile[x][j][oldTile[x][j]].state=false; oldTile[x][j]=oldTile[si<i?x+1:x-1][j]; tile[x][j][oldTile[x][j]].state=true; } } if(si==i||sj==j){ if(oldTile[i][j]>-1) tile[i][j][oldTile[i][j]].state=false; oldTile[i][j]=-1; si=i; sj=j; } } ) >> >> } \def\ShuffleIndex#1{% \csname ShuffleValue#1\endcsname% } \expandafter\def\csname ShuffleValue0\endcsname{5} \expandafter\def\csname ShuffleValue1\endcsname{12} \expandafter\def\csname ShuffleValue2\endcsname{3} \expandafter\def\csname ShuffleValue3\endcsname{14} \expandafter\def\csname ShuffleValue4\endcsname{1} \expandafter\def\csname ShuffleValue5\endcsname{6} \expandafter\def\csname ShuffleValue6\endcsname{11} \expandafter\def\csname ShuffleValue7\endcsname{9} \expandafter\def\csname ShuffleValue8\endcsname{8} \expandafter\def\csname ShuffleValue9\endcsname{2} \expandafter\def\csname ShuffleValue10\endcsname{7} \expandafter\def\csname ShuffleValue11\endcsname{10} \expandafter\def\csname ShuffleValue12\endcsname{15} \expandafter\def\csname ShuffleValue13\endcsname{4} \expandafter\def\csname ShuffleValue14\endcsname{13} \expandafter\def\csname ShuffleValue15\endcsname{0} \begin{document} \newcount\shufcount \shufcount=0 \begin{tikzpicture} \multido{\nX=0+1.1,\iI=0+1}{4}{% \multido{\nY=3.3+-1.1,\iJ=0+1}{4}{% \edef\CellIndex{\the\numexpr\iI+\iJ*4\relax}% \edef\RandIndex{\ShuffleIndex{\CellIndex}}% \multido{\iK=1+1}{15}{% \begin{scope}[ocg={ref=\iI.\iJ.\iK,% status=\MyStatus{\ShuffleIndex{\the\numexpr\iI+\iJ*4\relax}}{\iK}}]% \node[anchor=south west,inner sep=0pt]% at (\nX,\nY) {\xusebox{Image.\iK}};% \end{scope}% }% \draw[line width=0,% postaction={% path picture={% \node[anchor=south west,inner sep=0pt]% at (path picture bounding box.south west)% {\mediabutton[jsaction={onButtonClick(\iI,\iJ);}]{% \tikz \useasboundingbox% (path picture bounding box.south west)% rectangle% (path picture bounding box.north east);}};% }% }]% (\nX,\nY) rectangle ++(1.1,1.1);% }% }% \end{tikzpicture} \end{document} I’d appreciate any tips or corrections. If I’m handling the OCG indexing or JavaScript scope wrong, please let me know how to fix it. Thanks in advance!
- Tex Live updated package, now I get "Extra alignment tab has been changed to \cr." when I try to compile a NiceTabularby Andrew Swift on January 22, 2026 at 8:26 pm
I let Tex Live run package updates, and now my documents won't compile if they contain a NiceTabular. I always get the error "Extra alignment tab has been changed to \cr." I also tried downloading sample code from online examples to see if it was something specific about my document but none of those will compile either. This one that I tried. It works fine on an old computer but not on my updated one. \usepackage{nicematrix} \begin{document} \begin{table}[ht!] \centering \begin{NiceTabular}{c|c|c} Category & Cost & Value \\ Data A & 200 & 200 \\ Data B & 100& 200 \\ Data C & 300 & 100 \\ \end{NiceTabular} \end{table} \end{document} This is the console output: This is pdfTeX, Version 3.141592653-2.6-1.40.28 (TeX Live 2025) (preloaded format=pdflatex) restricted \write18 enabled. entering extended mode (./test.tex LaTeX2e <2025-11-01> L3 programming layer <2026-01-10> (/usr/local/texlive/2025/texmf-dist/tex/latex/base/article.cls Document Class: article 2025/01/22 v1.4n Standard LaTeX document class (/usr/local/texlive/2025/texmf-dist/tex/latex/base/size10.clo)) (/usr/local/texlive/2025/texmf-dist/tex/latex/nicematrix/nicematrix.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/Users/aswift/Library/texmf/tex/latex/tmeslatex/graphicx.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/keyval.sty) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/trig.sty) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def))) (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te x) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/pgf.revision.tex))) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfil tered.code.tex)) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d ef (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p df.def))) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol. code.tex)) (/usr/local/texlive/2025/texmf-dist/tex/latex/xcolor/xcolor.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-cfg/color.cfg) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/mathcolor.ltx)) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code. tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic .code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo nometric.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando m.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa rison.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round .code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ erarithmetics.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co de.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst ruct.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage .code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co de.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst ate.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform ations.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod e.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c ode.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce ssing.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co de.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod e.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod e.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co de.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare ncy.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code. tex))) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod e.tex) (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/Users/aswift/Library/texmf/tex/latex/tmeslatex/amsbsy.sty) (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/Users/aswift/Library/texmf/tex/latex/tools/array.sty)) (/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def) (./test.aux) (/usr/local/texlive/./test.tex:18: Extra alignment tab has been changed to \cr. <template> \endtemplate l.18 \end{NiceTabular} ? 2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] ) (/usr/local/texlive/2025/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) ./test.tex:18: Extra alignment tab has been changed to \cr. <template> \endtemplate l.18 \end{NiceTabular} ? And this is the log: This is pdfTeX, Version 3.141592653-2.6-1.40.28 (TeX Live 2025) (preloaded format=pdflatex 2026.1.21) 22 JAN 2026 15:30 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. %&-line parsing enabled. **test.tex (./test.tex LaTeX2e <2025-11-01> L3 programming layer <2026-01-10> (/usr/local/texlive/2025/texmf-dist/tex/latex/base/article.cls Document Class: article 2025/01/22 v1.4n Standard LaTeX document class (/usr/local/texlive/2025/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) ) \c@part=\count275 \c@section=\count276 \c@subsection=\count277 \c@subsubsection=\count278 \c@paragraph=\count279 \c@subparagraph=\count280 \c@figure=\count281 \c@table=\count282 \abovecaptionskip=\skip49 \belowcaptionskip=\skip50 \bibindent=\dimen148 ) (/usr/local/texlive/2025/texmf-dist/tex/latex/nicematrix/nicematrix.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/Users/aswift/Library/texmf/tex/latex/tmeslatex/graphicx.sty Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2022/05/29 v1.15 key=value parser (DPC) \KV@toks@=\toks17 ) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/graphics.sty Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2023/12/02 v1.11 sin cos tan (DPC) ) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-cfg/graphics.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) Package graphics Info: Driver file: pdftex.def on input line 106. (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-def/pdftex.def File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex )) \Gin@req@height=\dimen149 \Gin@req@width=\dimen150 ) (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/usr/local/texlive/2025/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te x \pgfutil@everybye=\toks18 \pgfutil@tempdima=\dimen151 \pgfutil@tempdimb=\dimen152 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def \pgfutil@abb=\box53 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/pgf.revision.tex) Package: pgfrcs 2025-08-29 v3.1.11a (3.1.11a) )) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex Package: pgfsys 2025-08-29 v3.1.11a (3.1.11a) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex \pgfkeys@pathtoks=\toks19 \pgfkeys@temptoks=\toks20 (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfil tered.code.tex \pgfkeys@tmptoks=\toks21 )) \pgf@x=\dimen153 \pgf@y=\dimen154 \pgf@xa=\dimen155 \pgf@ya=\dimen156 \pgf@xb=\dimen157 \pgf@yb=\dimen158 \pgf@xc=\dimen159 \pgf@yc=\dimen160 \pgf@xd=\dimen161 \pgf@yd=\dimen162 \w@pgf@writea=\write3 \r@pgf@reada=\read2 \c@pgf@counta=\count283 \c@pgf@countb=\count284 \c@pgf@countc=\count285 \c@pgf@countd=\count286 \t@pgf@toka=\toks22 \t@pgf@tokb=\toks23 \t@pgf@tokc=\toks24 \pgf@sys@id@count=\count287 (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg File: pgf.cfg 2025-08-29 v3.1.11a (3.1.11a) ) Driver file for pgf: pgfsys-pdftex.def (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d ef File: pgfsys-pdftex.def 2025-08-29 v3.1.11a (3.1.11a) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p df.def File: pgfsys-common-pdf.def 2025-08-29 v3.1.11a (3.1.11a) ))) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath. code.tex File: pgfsyssoftpath.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgfsyssoftpath@smallbuffer@items=\count288 \pgfsyssoftpath@bigbuffer@items=\count289 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol. code.tex File: pgfsysprotocol.code.tex 2025-08-29 v3.1.11a (3.1.11a) )) (/usr/local/texlive/2025/texmf-dist/tex/latex/xcolor/xcolor.sty Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK) (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics-cfg/color.cfg File: color.cfg 2016/01/02 v1.6 sample color configuration ) Package xcolor Info: Driver file: pdftex.def on input line 274. (/usr/local/texlive/2025/texmf-dist/tex/latex/graphics/mathcolor.ltx) Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349. Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353. Package xcolor Info: Model `RGB' extended on input line 1365. Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367. Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368. Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369. Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370. Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372. ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex Package: pgfcore 2025-08-29 v3.1.11a (3.1.11a) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex \pgfmath@dimen=\dimen163 \pgfmath@count=\count290 \pgfmath@box=\box54 \pgfmath@toks=\toks25 \pgfmath@stack@operand=\toks26 \pgfmath@stack@operation=\toks27 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code. tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic .code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo nometric.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando m.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa rison.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round .code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc. code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ erarithmetics.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex \c@pgfmathroundto@lastzeros=\count291 )) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co de.tex File: pgfcorepoints.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@picminx=\dimen164 \pgf@picmaxx=\dimen165 \pgf@picminy=\dimen166 \pgf@picmaxy=\dimen167 \pgf@pathminx=\dimen168 \pgf@pathmaxx=\dimen169 \pgf@pathminy=\dimen170 \pgf@pathmaxy=\dimen171 \pgf@xx=\dimen172 \pgf@xy=\dimen173 \pgf@yx=\dimen174 \pgf@yy=\dimen175 \pgf@zx=\dimen176 \pgf@zy=\dimen177 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst ruct.code.tex File: pgfcorepathconstruct.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@path@lastx=\dimen178 \pgf@path@lasty=\dimen179 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage .code.tex File: pgfcorepathusage.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@shorten@end@additional=\dimen180 \pgf@shorten@start@additional=\dimen181 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co de.tex File: pgfcorescopes.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgfpic=\box55 \pgf@hbox=\box56 \pgf@layerbox@main=\box57 \pgf@picture@serial@count=\count292 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst ate.code.tex File: pgfcoregraphicstate.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgflinewidth=\dimen182 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform ations.code.tex File: pgfcoretransformations.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@pt@x=\dimen183 \pgf@pt@y=\dimen184 \pgf@pt@temp=\dimen185 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod e.tex File: pgfcorequick.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c ode.tex File: pgfcoreobjects.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce ssing.code.tex File: pgfcorepathprocessing.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co de.tex File: pgfcorearrows.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgfarrowsep=\dimen186 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod e.tex File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@max=\dimen187 \pgf@sys@shading@range@num=\count293 \pgf@shadingcount=\count294 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod e.tex File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal. code.tex File: pgfcoreexternal.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgfexternal@startupbox=\box58 ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co de.tex File: pgfcorelayers.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare ncy.code.tex File: pgfcoretransparency.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns. code.tex File: pgfcorepatterns.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code. tex File: pgfcorerdf.code.tex 2025-08-29 v3.1.11a (3.1.11a) ))) (/usr/local/texlive/2025/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod e.tex File: pgfmoduleshapes.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgfnodeparttextbox=\box59 ) Package: nicematrix 2026/01/05 v7.5a Enhanced arrays with the help of PGF/TikZ (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2025/07/09 v2.17z AMS math features \@mathmargin=\skip51 For additional information on amsmath, use the `?' option. (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2024/11/17 v2.01 AMS text (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions \@emptytoks=\toks28 \ex@=\dimen188 )) (/Users/aswift/Library/texmf/tex/latex/tmeslatex/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d \pmbraise@=\dimen189 ) (/usr/local/texlive/2025/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 2022/04/08 v2.04 operator names ) \inf@bad=\count295 LaTeX Info: Redefining \frac on input line 233. \uproot@=\count296 \leftroot@=\count297 LaTeX Info: Redefining \overline on input line 398. LaTeX Info: Redefining \colon on input line 409. \classnum@=\count298 \DOTSCASE@=\count299 LaTeX Info: Redefining \ldots on input line 495. LaTeX Info: Redefining \dots on input line 498. LaTeX Info: Redefining \cdots on input line 619. \Mathstrutbox@=\box60 \strutbox@=\box61 LaTeX Info: Redefining \big on input line 721. LaTeX Info: Redefining \Big on input line 722. LaTeX Info: Redefining \bigg on input line 723. LaTeX Info: Redefining \Bigg on input line 724. \big@size=\dimen190 LaTeX Font Info: Redeclaring font encoding OML on input line 742. LaTeX Font Info: Redeclaring font encoding OMS on input line 743. \macc@depth=\count300 LaTeX Info: Redefining \bmod on input line 904. LaTeX Info: Redefining \pmod on input line 909. LaTeX Info: Redefining \smash on input line 939. LaTeX Info: Redefining \relbar on input line 969. LaTeX Info: Redefining \Relbar on input line 970. \c@MaxMatrixCols=\count301 \dotsspace@=\muskip17 \c@parentequation=\count302 \dspbrk@lvl=\count303 \tag@help=\toks29 \row@=\count304 \column@=\count305 \maxfields@=\count306 \andhelp@=\toks30 \eqnshift@=\dimen191 \alignsep@=\dimen192 \tagshift@=\dimen193 \tagwidth@=\dimen194 \totwidth@=\dimen195 \lineht@=\dimen196 \@envbody=\toks31 \multlinegap=\skip52 \multlinetaggap=\skip53 \mathdisplay@stack=\toks32 LaTeX Info: Redefining \[ on input line 2950. LaTeX Info: Redefining \] on input line 2951. ) (/Users/aswift/Library/texmf/tex/latex/tools/array.sty Package: array 2005/08/23 v2.4b Tabular extension package (FMi) \col@sep=\dimen197 \extrarowheight=\dimen198 \NC@list=\toks33 \extratabsurround=\skip54 \backup@length=\skip55 ) \l__nicematrix_tmpc_dim=\dimen199 \l__nicematrix_tmpd_dim=\dimen256 \l__nicematrix_tmpc_int=\count307 \g__nicematrix_env_int=\count308 \l__nicematrix_the_array_box=\box62 \g__nicematrix_NiceMatrixBlock_int=\count309 \g__nicematrix_notes_caption_int=\count310 \l__nicematrix_columns_width_dim=\dimen257 \l__nicematrix_col_width_dim=\dimen258 \g__nicematrix_row_total_int=\count311 \g__nicematrix_col_total_int=\count312 \g__nicematrix_last_row_node_int=\count313 \l__nicematrix_key_nb_rows_int=\count314 \g__nicematrix_blocks_wd_dim=\dimen259 \g__nicematrix_blocks_ht_dim=\dimen260 \g__nicematrix_blocks_dp_dim=\dimen261 \l__nicematrix_width_dim=\dimen262 \l__nicematrix_tabular_width_dim=\dimen263 \l__nicematrix_rule_width_dim=\dimen264 \l__nicematrix_old_iRow_int=\count315 \l__nicematrix_old_jCol_int=\count316 \l__nicematrix_X_columns_dim=\dimen265 \l__nicematrix_brace_shift_dim=\dimen266 \l__nicematrix_x_initial_dim=\dimen267 \l__nicematrix_y_initial_dim=\dimen268 \l__nicematrix_x_final_dim=\dimen269 \l__nicematrix_y_final_dim=\dimen270 \g__nicematrix_dp_row_zero_dim=\dimen271 \g__nicematrix_ht_row_zero_dim=\dimen272 \g__nicematrix_ht_row_one_dim=\dimen273 \g__nicematrix_dp_ante_last_row_dim=\dimen274 \g__nicematrix_ht_last_row_dim=\dimen275 \g__nicematrix_dp_last_row_dim=\dimen276 \g__nicematrix_width_last_col_dim=\dimen277 \g__nicematrix_width_first_col_dim=\dimen278 \g__nicematrix_ddots_int=\count317 \g__nicematrix_iddots_int=\count318 \g__nicematrix_delta_x_one_dim=\dimen279 \g__nicematrix_delta_y_one_dim=\dimen280 \g__nicematrix_delta_x_two_dim=\dimen281 \g__nicematrix_delta_y_two_dim=\dimen282 \l__nicematrix_row_min_int=\count319 \l__nicematrix_row_max_int=\count320 \l__nicematrix_col_min_int=\count321 \l__nicematrix_col_max_int=\count322 \l__nicematrix_initial_i_int=\count323 \l__nicematrix_initial_j_int=\count324 \l__nicematrix_final_i_int=\count325 \l__nicematrix_final_j_int=\count326 \l__nicematrix_start_int=\count327 \l__nicematrix_end_int=\count328 \l__nicematrix_local_start_int=\count329 \l__nicematrix_local_end_int=\count330 \g__nicematrix_static_num_of_col_int=\count331 \l__nicematrix_rounded_corners_dim=\dimen283 \l__nicematrix_tab_rounded_corners_dim=\dimen284 \l__nicematrix_offset_dim=\dimen285 \l__nicematrix_line_width_dim=\dimen286 \g__nicematrix_block_box_int=\count332 \l__nicematrix_submatrix_extra_height_dim=\dimen287 \l__nicematrix_submatrix_left_xshift_dim=\dimen288 \l__nicematrix_submatrix_right_xshift_dim=\dimen289 \l__nicematrix_first_row_int=\count333 \l__nicematrix_first_col_int=\count334 \l__nicematrix_last_row_int=\count335 \l__nicematrix_last_col_int=\count336 \c@tabularnote=\count337 \g__nicematrix_tabularnote_int=\count338 \c@nicematrix_draft=\count339 \l__nicematrix_cell_space_top_limit_dim=\dimen290 \l__nicematrix_cell_space_bottom_limit_dim=\dimen291 \l__nicematrix_xdots_inter_dim=\dimen292 \l__nicematrix_xdots_shorten_start_dim=\dimen293 \l__nicematrix_xdots_shorten_end_dim=\dimen294 \l__nicematrix_xdots_radius_dim=\dimen295 \l__nicematrix_left_margin_dim=\dimen296 \l__nicematrix_right_margin_dim=\dimen297 \l__nicematrix_extra_left_margin_dim=\dimen298 \l__nicematrix_extra_right_margin_dim=\dimen299 \c__nicematrix_max_l_dim=\dimen300 \l__nicematrix_position_int=\count340 \l__nicematrix_multiplicity_int=\count341 \l__nicematrix_brace_yshift_dim=\dimen301 ) (/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF o
- Spacing with xlopby Martin on January 22, 2026 at 7:41 pm
When using onehalfspacing from the setspace package, the spacing also applies to the display of calculations from the xlop package. Is it possible to change that so that these calculations are displayed with singlespacing? MWE: \documentclass[a4paper,12pt,ngerman]{article} \usepackage[top=1.5cm]{geometry} \usepackage{setspace} \onehalfspacing \usepackage{xlop} \begin{document} \begin{center} \opdiv[voperator=bottom,voperation=top,displayintermediary=all,decimalsepsymbol={,},shiftdecimalsep=divisor,maxdivstep=2,columnwidth=0.6em,decimalsepwidth=0.3em]{6543}{123} \end{center} \end{document}
- hyperref + algorithm2e + zref-clever = 🐛: referencing an algorithm and a line in it produces the same type name for both 😢by Mark McGregor on January 22, 2026 at 7:11 pm
We try to reference a line in a shy algorithm and the algorithm itself with zref-clever. Running pdflatex twice on \documentclass{article} \pagestyle{empty} \usepackage{hyperref} \usepackage{algorithm2e} \usepackage{zref-clever} \zcRefTypeSetup{algocf}{ name-sg=Alg.\@, Name-sg=Alg.\@ } \zcRefTypeSetup{AlgoLine}{ Name-sg=line, name-sg=line } \zcRefTypeSetup{algocfline}{ Name-sg=line, name-sg=line } \zcRefTypeSetup{line}{ Name-sg=line, name-sg=line } \begin{document} \begin{algorithm}\LinesNumbered \caption{My great algorithm}\label{algLabel} \KwOut{The oh so great output of my great algorithm} command1\; command2\nllabel{lineLabel}\; command3 \end{algorithm} \zcref[S]{algLabel} contains \zcref{lineLabel}. \end{document} yields As we see, the second type name is “Alg.”, whereas we'd expect “line”. If we comment out hyperref, we get “Alg. 1 contains line 2.” as expected. So far we failed to get different type names for the two references in the presence of hyperref, so you can blame it. At the same time, given that algorithm2e has been unmaintained for about 8½ years and zref-clever for slightly over 1 year, you can blame them, too. Anyway, what is the technical root cause of the failure? Any bugfix, patch, or workaround?
- Unexpected tabular vertical alignmentby itobito on January 22, 2026 at 4:52 pm
I'm having a difficult time understanding the vertical alignment of columns of tables created via tabular. My Code \documentclass{article} \usepackage{array} \begin{document} \begin{tabular}{ | p{2.5cm} | m{2.5cm}| b{2.5cm} | } \hline cell1 dummy text dummy text dummy text& cell2 & cell3 \\ \hline cell4 & cell5 dummy text dummy text dummy text & cell6 \\ \hline cell7 & cell8 & cell9 dummy text dummy text dummy text\\ \hline \end{tabular} \end{document} This example is pretty much taken directly from the Overleaf Tables documentation, with the difference being the varying column alignments. I'd expect the code above to produce Expected table with the text in the first column top-aligned, the text in the second column middle-aligned, and the text in the third column bottom-aligned. However, the code above actually produces Actual table I know it's possible (and easier) with the tabularray package, but I'd like to understand why. Why do my actual table's columns have seemingly incorrect vertical alignments?
- Weird \text{} interactions while using Mathjax [closed]by Dhairya Kumar on January 22, 2026 at 4:43 pm
I came across the error where the 'and' refused to bdge through and make a gap in between the code. Code: $$\overline{AM}=\overline{BN}=a,\overline{BP}=\overline{CQ}=b, \text{and} \overline{CR}=\overline{AS}=c$$ Help me overcome it.
- Subfigures from a comma list: add left-side A, B, C… labels aligned to the top, outside the imagesby taiwan12 on January 22, 2026 at 3:42 pm
I previously asked about creating a centered grid of subfigures from a comma-separated list with no gaps, and I received a working expl3 solution (thanks to jps) (The previously asked question can be found below, and the link.). Now I would like to extend this setup with letter labels placed next to each image, not overlaid on the image itself. Input \multipleIMG{<images per row>}{<comma-separated list of image files>}{<main label>}{<main caption>} Desired layout (conceptually): [A] [small gap] image1 [bigger gap] [B] [small gap] image2 [bigger gap] [C] [small gap] image3 More precisely: Each image should have a label A, B, C, … The label should be to the left of the image, not on top of it The label and the image should be top-left-aligned There should be a small horizontal space between the label and its image There should be a larger horizontal space between consecutive (label + image) groups The letters should be generated automatically from the image index The solution should integrate cleanly with the existing expl3 loop and preserve the centered grid layout Example about what I want: Input: \multimg{3} { example-image-duck, example-image-duck, example-image-duck, example-image-duck, example-image-duck } {fig:ducksI} {A happy duck family I} Output: jps answers (without top-left labels) \documentclass{article} \usepackage{graphicx} \usepackage{subcaption} \usepackage[colorlinks=true]{hyperref} \usepackage{float} \ExplSyntaxOn \dim_new:N \l__taiwan_img_width_dim \int_new:N \l__taiwan_img_index_int \cs_new:Npn \__taiwan_img_sublabel:n #1 {} \cs_generate_variant:Nn \__taiwan_img_sublabel:n { V } \NewDocumentCommand \multimg { m m m m } { \begin{figure}[H] \centering \int_zero:N \l__taiwan_img_index_int \dim_set:Nn \l__taiwan_img_width_dim { \linewidth / #1 } \cs_set:Npn \__taiwan_img_sublabel:n ##1 { \phantomcaption \label { #3_##1 } } \clist_map_inline:nn {#2} { \int_incr:N \l__taiwan_img_index_int \begin{subfigure}{\l__taiwan_img_width_dim} \includegraphics [width=\linewidth] {##1} \__taiwan_img_sublabel:V \l__taiwan_img_index_int \end{subfigure} \allowbreak } \caption { #4 \label {#3} } \end{figure} } \ExplSyntaxOff \usepackage{duckuments} % <- or otherwise we'd get the same duck every time \begin{document} \multimg{3} { example-image-duck, example-image-duck, example-image-duck, example-image-duck, example-image-duck } {fig:ducksI} {A happy duck family I} \multimg{5} { example-image-duck, example-image-duck, example-image-duck, example-image-duck, example-image-duck } {fig:ducksII} {A happy duck family II} Just take a look at the happy ducks in figure~\ref{fig:ducksI}. Aren't they majestic? Especially the duckling in figure~\ref{fig:ducksI_3}. \end{document} The previously asked question: I’m trying to define a LaTeX command that creates a figure containing multiple subfigures from a comma-separated list of image names. I’d like a macro with this interface: \multipleIMG{<images per row>}{<comma-separated list of image files>}{<main label>}{<main caption>} Requirements: Use the full available width (\linewidth). No horizontal and vertical gaps between images. Each row should be centered as a whole (even the last row if it’s not full). All images must have the same width (based on <images per row>). Create sublabels automatically as <main label>_1, <main label>_2, … (1, 2, 3, …). I’m using subcaption. I don’t want visible subcaptions, only labels for referencing (\phantomcaption is fine). Example input: \multipleIMG{3}{location-1,location-2,location-3,location-4,location-5}{fig:first}{Five Figure} This should produce 3 images in the first row, then 2 centered images in the second row, all with equal widths, and labels: fig:first_1, fig:first_2, fig:first_3, fig:first_4, fig:first_5 So that I can reference both the main figure and a subfigure like: \ref{fig:first}, \ref{fig:first_1}
- which configurable text editor for macos [closed]by praly on January 22, 2026 at 2:49 pm
For many many years I was using Alpha as configurable text editor for typing Latex in use with MacOS. Unfortunately this software is no more maintained and no more compatible with recent version of MacOS. Any suggestion for another such editor with easy and well documented extension language (Alpha is based on TCL) to be used with TeXShop for typesetting?
- I need help with the bold command [closed]by FOMUM NDE ROLAND on January 22, 2026 at 2:29 pm
I used the code: \textbf{greatest} in my work, but the word "greatest" is not in bold. What must I do?
- How to achieve Lua "class" with C++ style constructor and (function) pointers in LuaLaTeX?by dsacre on January 22, 2026 at 2:19 pm
Background Consider the following: One has several LuaLaTeX packages, which provide similar, but case specific functionality. Consequently, they have slightly different internal logic and require access to different external Lua modules. Instead of copying the code each time, making the necessary, minute adjustments and creating hard to maintain code duplication in the process, one wants to write a class-like wrapper. Since Lua has no class functionality built in, but supports meta programming via prototypes, the process is not straight forward. The following code is based upon the Lua documentation. MWE Since for this use case the only required change between "object instances" are function and data references, a C++ like "pointer" approach was used. Furthermore, to keep the code nice and compact, a C++ like "constructor" is implemented. Please note that in this very simplified example, there is only one external Lua logic module and one "database" included. In the actual use case, there are many more, which would justify the implementation efforts for a prototype. % !TeX program = lualatex \documentclass{article} \begin{filecontents*}{module.lua} -- DESCRIPTION: Provide database functionality function m_addData(a_database, a_key, a_data) a_database[a_key] = a_data end return { addDataModule = m_addData } \end{filecontents*} \begin{filecontents*}{class.lua} -- DESCRIPTION: Provide wrapper to re-use logic Class = {} -- DESCRIPTION: Function to add a new "object" instance function Class:new(o) o = o or {} setmetatable(o, self) self.__index = self -- DESCRIPTION: Loading of data specified -- by "constructor" into "object" self.database = o.database self.logic = o.logic return o end -- DESCRIPTION: Wrapper for database interaction function Class:addDataWrapper(a_key, a_data) self.logic.addDataModule( self.database, a_key, a_data ) end \end{filecontents*} \begin{document} Program execution \directlua{ % DESCRIPTION: Loading of Lua files require("./class") myModule = require("./module") % DESCRIPTION: Create the data structures myDatabase = {} myWrapper = Class:new{ database = myDatabase, logic = myModule } % DESCRIPTION: Call addData function directly from module % STATUS: WORKING myModule.addDataModule(myDatabase, "directly from module", "works") texio.write_nl("Database Entry: key = 'directly from module', value = '" .. myDatabase["directly from module"] .. "'") % DESCRIPTION: Call addData function from wrapper data path % STATUS: WORKING myWrapper.logic.addDataModule(myDatabase, "from wrapper data path", "works") texio.write_nl("Database Entry: key = 'from wrapper data path', value = '" .. myDatabase["from wrapper data path"] .. "'") % DESCRIPTION: Call addData function from wrapper data path % STATUS: FAILS myWrapper.addDataWrapper("directly from wrapper", "fails") } \end{document} Output Somehow the "pointers" are initialized, but not accessible directly via the wrapper. Database Entry: key = 'directly from module', value = 'works' Database Entry: key = 'from wrapper data path', value = 'works'./class.lua:20: attempt to index a nil value (field 'logic') stack traceback: ./class.lua:20: in field 'addDataWrapper' [\directlua]:1: in main chunk. l.69 } What was tried so far and did not work Separate initialization function Packing the external data passed in via the constructor as a meta table via setmetatable Different style of object initialization (see this article on the Lua users forum) Class = {} Class.__index = Class function Class:new(a_object) local tmp_class = {} setmetatable(tmp_class, Class) tmp_class.database = a_object.database tmp_class.logic = a_object.logic return tmp_class end Using inheritance like suggested in the Lua Manual to create a new prototype with all the required data, hoping that the references might be valid at the time the "member" functions of the new prototype would be created -- Example from the Lua Manual -- SOURCE: https://www.lua.org/pil/16.2.html Account = {balance = 0} function Account:new (o) o = o or {} setmetatable(o, self) self.__index = self return o end SpecialAccount = Account:new() function SpecialAccount:withdraw (v) if v - self.balance >= self:getLimit() then error"insufficient funds" end self.balance = self.balance - v end function SpecialAccount:getLimit () return self.limit or 0 end s = SpecialAccount:new{limit=1000.00} Question Is there a way to achieve this goal of C++ style data/function pointers in Lua in general and in the LuaLaTeX specific case with the following restrictions: Lua Version 5.3 No external libraries or libraries that have to be included in the LuaLaTeX package
- Speeding up compilation for the most complete Karnaugh maps packageby Signor Pizza on January 22, 2026 at 12:59 pm
I found this to be the most complete package, which is why I insist on using it. I compiled all available LaTeX packages from source last month so I'm also confident I have everything up to date and working. In the docs it recommends this program to produce .tex files: I definitely got a file to succeed, but it really did take very long (probably at least 10 minutes), and I noticed only 1 of my 8 CPU cores was being used. Does that mean I have to divide the file up, so at least every CPU core works on one piece? I heard LaTeX doesn't support multi-core operation. For reference, here is a .tex file I have just generated. This is where it typically gets stuck on in the CLI: yalihupokn@zoqu-endiman:~/Downloads$ latex fine.tex This is pdfTeX, Version 3.141592653-2.6-1.40.28 (TeX Live 2025) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./fine.tex LaTeX2e <2025-11-01> L3 programming layer <2025-12-29> (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/base/article.cl s Document Class: article 2025/01/22 v1.4n Standard LaTeX document class (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/base/size10.clo )) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/lmodern.sty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/base/fontenc.st y (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/t1lmr.fd)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/base/inputenc.s ty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/amsmath/amsmath .sty For additional information on amsmath, use the `?' option. (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/amsmath/amstext .sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/amsmath/amsgen. sty)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/amsmath/amsbsy. sty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/amsmath/amsopn. sty)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/xcolor/xcolor.s ty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics-cfg/co lor.cfg) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics-def/dv ips.def) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics/mathco lor.ltx)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/colortbl/colort bl.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/tools/array.sty )) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/frontendlay er/tikz.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/basiclayer/ pgf.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/utilities/p gfrcs.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfutil-common.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfutil-latex.def) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfrcs.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/pgf.revis ion.tex))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/basiclayer/ pgfcore.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics/graphi cx.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics/keyval .sty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics/graphi cs.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics/trig.s ty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/graphics-cfg/gr aphics.cfg))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/systemlayer /pgfsys.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgfsys.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfkeys.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfkeyslibraryfiltered.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgf.cfg) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgfsys-dvips.def (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgfsys-common-postscript.def))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgfsyssoftpath.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/systemlay er/pgfsysprotocol.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcore.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm ath.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athutil.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athparser.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.basic.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.trigonometric.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.random.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.comparison.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.base.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.round.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.misc.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfunctions.integerarithmetics.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athcalc.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm athfloat.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfi nt.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorepoints.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorepathconstruct.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorepathusage.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorescopes.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoregraphicstate.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoretransformations.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorequick.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoreobjects.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorepathprocessing.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorearrows.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoreshade.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoreimage.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoreexternal.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorelayers.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoretransparency.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorepatterns.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcorerdf.code.tex))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/modules/p gfmoduleshapes.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/modules/p gfmoduleplot.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/compatibili ty/pgfcomp-version-0-65.sty) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/compatibili ty/pgfcomp-version-1-18.sty)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/utilities/p gffor.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/utilities/p gfkeys.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgfkeys.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/pgf/math/pgfmat h.sty (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/math/pgfm ath.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/utilities /pgffor.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/tikz.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/libraries /pgflibraryplothandlers.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/modules/p gfmodulematrix.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/libraries/tikzlibrarytopaths.code.tex))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/tikz-karnaugh/t ikzlibrarykarnaugh.code.tex Macros for typesetting Karnaugh maps Version 1.5 of 15 February 2022 by Luis Paulo Laus, laus@utfpr.edu.br ) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/tikz-ladder/tik zlibrarycircuits.plc.ladder.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/libraries/circuits/tikzlibrarycircuits.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/libraries/tikzlibrarycalc.code.tex) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/frontendl ayer/tikz/libraries/tikzlibrarydecorations.code.tex (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/modules/p gfmoduledecorations.code.tex)) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/libraries /decorations/pgflibrarydecorations.markings.code.tex)))) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/l3backend/l3bac kend-dvips.def) LaTeX Warning: Unused global option(s): [british]. (./fine.aux) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/ot1lmr.fd) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/omllmm.fd) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/omslmsy.fd) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/latex/lm/omxlmex.fd) [1] There's also some extra info in the log file: yalihupokn@zoqu-endiman:/tmp/tmp.nsHFUeQUSU$ tail -f fine.log File: pgfcoreshade.code.tex 2025-08-29 v3.1.11a (3.1.11a) \pgf@max=\dimen198 \pgf@sys@shading@range@num=\count307 \pgf@shadingcount=\count308 ) (/home/yalihupokn/install-tl-20260102/2025/texmf-dist/tex/generic/pgf/basiclaye r/pgfcoreimage.code.tex File: pgfcoreimage.code.tex 2025-08-29 v3.1.11a (3.1.11a) ) (/home/yalihupokn/install-tl-2 This is what I see when I try to stop it: [1]^C ! Interruption. <argument> ...node [right] at (4.1,2) {\ifnum \mm =1 $A = {\color {blue}X\,\... l.92 } ? ^C^C^C^C^C^C^C^C^C^H^H^C^C^C^C^C^C
- latex-lab-footnotes.ltx's hook seems to break my classby Matthias on January 22, 2026 at 10:09 am
Since my last update of the Latex packages (Mac TeX), a class I developed, which had been working fine until then, is broken. At the line \begin{document} I get the error ! Undefined control sequence. <argument> \ERROR \cs_set_eq:NN \__fnote_tmp:w \exp_stop_f: l.9 \begin{document} Because of the error's place, the culprit should be a hook. Searching for the code, I found the sequence in latex-lab-footnotes.ltx. At this point, I'm lost. I've no idea how to debug a kernel hook and I'm would be thankful for any hint. ==EDIT== I was asked for a MWE. Regarding the actual document, this is easy but kind of not very helpful: \DocumentMetadata{pdfversion=1.7,lang=de-DE} \documentclass{osgbeamer} \begin{document} \chapter{Foo} \end{document} On the other hand, osgbeamer is a not so small class with quite a number of packages, but none of them deals explicitly with footnotes. To make a MWE example here is (without a hint what I should look for) very hard.
- Keep columns layout in the article version of a beamer presentationby Tobard on January 22, 2026 at 9:43 am
I use the beamerarticle package to generate both presentation frames and article notes. Everything goes well except I lose a lot of space in the article layout because the column formatting is not preserved. Here is my Article.tex file: % Article.tex \documentclass[a4paper]{article} \usepackage{beamerarticle} \input{content} Here is my Presentation.tex file: % Presentation.tex \documentclass[ignorenonframetext]{beamer} \input{content} And here is my content.tex file: % INITIAL content.tex \usepackage{tikz} \begin{document} \begin{frame}%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \frametitle{Test frame with columns}\small \begin{columns} \column<+->[t]{.3\textwidth} This is the content of the first column. \tikz{\draw (0,0) rectangle (3,2)node[midway]{1};} \column<+->[t]{.3\textwidth} This is the content of the second column. \tikz{\draw (0,0) rectangle (3,2)node[midway]{2};} \end{columns} \end{frame}%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> \end{document} And here are the results of both documents : Then I tried to modify the columns environment in the preamble of content.tex, but it works only if I redefine the columns with \begin{columns}{.3\textwidth} and \end{columns} rather than the simple and convenient \column{.3\textwidth} macro: % NEW content.tex \usepackage{tikz} \mode<article>{ \renewenvironment<>{columns}[1][]{}{} \renewenvironment<>{column}[2][]% {\begin{minipage}[t]{#2}}% {\end{minipage}\hfill} } \begin{document} \begin{frame}%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \frametitle{Test frame with columns}\small \begin{columns} % \column<+->[t]{.3\textwidth} \begin{column}<+->[t]{.3\textwidth} This is the content of the first column. \tikz{\draw (0,0) rectangle (3,2)node[midway]{1};} \end{column} % \column<+->[t]{.3\textwidth} \begin{column}<+->[t]{.3\textwidth} This is the content of the second column. \tikz{\draw (0,0) rectangle (3,2)node[midway]{2};} \end{column} \end{columns} \end{frame}%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> \end{document} What are the proper set of commands to use to preserve column behavior in article mode while using the \column{} macro ? Thank you for your help!
- When lemmas share the same counter as theorems, how to print “Lemma” in references produced by zcref-clever?by Mark McGregor on January 22, 2026 at 9:35 am
When cleveref died, we switched to zref-clever, but its \zcref refers to lemmas as theorems when we use the same counter. Namely, running pdflatex on \documentclass{article} \pagestyle{empty} \usepackage{zref-clever} \newtheorem{thm}{Theorem}[section] \newtheorem{lem}[thm]{Lemma} \zcRefTypeSetup{lem}{ name-sg=Lem. } \zcRefTypeSetup{thm}{ name-sg=Thm. } \begin{document} \section{My great section} \begin{lem}\label{lem}My great lemma.\end{lem} \begin{thm}\label{thm}My great theorem.\end{thm} According to \zcref{lem} \ldots \end{document} produces “According to Thm. 1.1 ...”: Above, we expected According to Lem. 1.1 ... though. Who is the culprit and what to do?
- Latex docclass apa7 using package changes fails with lettered listby BenJ on January 22, 2026 at 9:23 am
When is use the the track change command added like below \documentclass[man, donotrepeattitle, floatsintext, 12pt, a4paper]{apa7} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[american]{babel} \usepackage{csquotes} \usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex} \usepackage{graphicx} \usepackage{color,soul} \usepackage{array, longtable} \usepackage{enumitem} \usepackage{makecell} \usepackage[american]{varioref} \usepackage{lipsum} \usepackage[todonotes={textsize=tiny}, draft, defaultcolor=blue]{changes} % track changed draft vs final \definechangesauthor[name=bmmj]{bj} \begin{document} \maketitle \added{\begin{seriate} \item some text \end{seriate}} \end{document} no output is generated. Is there a work around? Error message see below. I have more error with change commando e.g. in headers but i avoid using change command there. ! Incomplete \iffalse; all text was ignoreer after line 86.
- Why does adjusting interline spacing within the TOC lose the page number from \setuphead in my example?by Gary on January 22, 2026 at 6:27 am
In this example, I'd like to adjust the spacing between list items in the TOC. I tried to follow the suggestion at https://wiki.contextgarden.net/Document_structure_and_headlines/Table_of_contents under the heading of Adjusting spacing between lines in ToC. Thus, I tried \start \setupinterlinespace[2.0ex] \completecontent[criterium=all] \stop but this removes the page number from the bottom of the page. What am I doing wrong? I was expecting \start and \stop to limit the change in interline spacing to within their boundaries but not alter/lose that which was already defined outside their boundaries. The example has the lines commented out. Thank you. Commented: Uncommented: \setuppapersize[A7, portrait] \setuppagenumbering[alternative=doublesided,location=] \starttext \startfrontmatter \definepagebreak [ChapterPageBreak] [yes] \setuphead [chapter][ page=ChapterPageBreak, header=empty, footer=chapter, before={\blank[2cm,force]}, after={\blank[1ex]} ] \definetext[chapter][footer][pagenumber] % \start % \setupinterlinespace[2.0ex] \completecontent[criterium=all] % \stop \startchapter [ title=\midaligned{Preface.}, list={Preface}, reference={}, marking={Preface.}, ] Some preface text page 1. \stopchapter \startchapter [ title=\midaligned{Important Dates.}, list={Important Dates}, reference={}, marking={Important Dates.}, ] A table of important dates. \stopchapter \stopfrontmatter \startbodymatter[page=right] \writebetweenlist[chapter]{\blank[4ex]\leftaligned{\smallcaps{Chapter}}} \definepagebreak [ChapterPageBreak] [yes] \setuphead [chapter][ page=ChapterPageBreak, header=empty, footer=chapter, before={\blank[2cm,force]}, after={\blank[1ex]} ] \definetext[chapter][footer][pagenumber] \startchapter [ title={First Chapter of Body.}, list={First of Body}, reference={}, marking={First Chapter of Body}, ] Opening paragraph. \stopchapter \startchapter [ title={Second Chapter of Body.}, list={Second of Body}, reference={}, marking={Second Chapter of Body}, ] Opening paragraph. \stopchapter \stopbodymatter \stoptext
- How to top-align a TikZ image node with a text node in Beamerby Marco Moldenhauer on January 21, 2026 at 9:41 pm
I am using TikZ in a Beamer slide to create a two-column layout: the left column contains a justified text block the right column contains an image inside a framed node Both nodes should be top-aligned, so that the top of the image frame aligns exactly with the top of the text block. However, my current code aligns the image relative to the center or east anchor of the text node, which causes a vertical misalignment when the text height changes. I would like the image frame to be aligned with the top edge of the text block, regardless of the text height. Question How can I position the image node so that its top edge is aligned with the top edge of the text node, independent of the text height? Which anchors or positioning keys should be used in TikZ to achieve reliable top alignment in this situation? My Code % !TeX TS-program = lualatex \documentclass{beamer} \usetheme[progressbar=frametitle]{moloch} \usepackage{tikz} \usetikzlibrary{positioning} \usepackage{lipsum} \begin{document} \begin{frame}{Your Title} \begin{tikzpicture}[ TEXTBLOCK/.style={ rectangle, draw=blue!50, fill=blue!20, thick, text width=0.45\textwidth, align=justify, inner sep=0mm }, IMAGEFRAME/.style={ rectangle, draw=blue!50, thick, inner sep=3mm, text width=0.45\textwidth, align=center } ] % --- Text block --- \node[TEXTBLOCK, anchor=north west] (TB1) at (0,0){\lipsum[1][1-6]}; % --- Image frame --- \node[IMAGEFRAME, anchor=north west, inner sep=0mm, right=6mm of TB1.east] (IMG1) {\includegraphics[width=\linewidth]{example-image}}; \end{tikzpicture} \end{frame} \end{document} My Output Desired Output
- Plotting a rational function in tikzby mf67 on January 21, 2026 at 9:17 pm
I'm trying to plot a rational function, but I constantly get dimensions too large, even if the plot frame is within the page and the function is within limits. \documentclass{book} \usepackage{pgf,tikz,pgfplots} \pgfplotsset{compat=1.15} \begin{document} \begin{tikzpicture}[declare function={r(\x)=(-\x*\x*\x*\x+600*\x*\x*\x-135000*\x*\x+10125000*\x)/(2109375*(30000-200*\x));}] \begin{axis}[ x=0.05cm,y=1cm, xmin=0, xmax=160, ymin=0, ymax=1, xlabel={\(x\)}, ylabel={\(y\)} ] \draw[domain=0:160,smooth,samples=100] plot ({\x},{r(\x)}); \end{axis} \end{tikzpicture} \end{document} What could be wrong? TIA. This is how the graph looks in Mathematica
- Include a pdf image 4"x4" on book front cover using \bookcovercomponentby josh on January 21, 2026 at 7:15 pm
I am designing a book cover using bookcover documentclass and would like to add a 4"x4" pdf graphics file in the center of the cover. The cover format is: Title at top, Edition, the graphics image, author name. I've tried using tikzpicture to insert the pdf (lines commented below) but receive lots of error messages was wondering if someone could help me? Here is my code so far: \documentclass[12pt, coverwidth=9.444in, coverheight=12.5in, bleedwidth=17mm, foldingmargin=false, markthick=0.0pt, marklength=7mm,% Markierungen: for printing: set to 0mm spinewidth=20mm, %pagecolor=Beige, trimmed=false% trimmed=false for printing ]{bookcover} \usepackage[cmintegrals,cmbraces]{newtxmath} \usepackage{ebgaramond-maths} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{bbding} \usepackage[x11names,dvipsnames,svgnames]{xcolor} \usepackage[ngerman]{babel} % \usepackage{tikz} % It is loaded by bookcover % \usepackage{calc} % It is loaded by bookcover \usepackage{microtype} \setlength{\marklength}{0pt} \geometry{% paperwidth=\coverwidth, paperheight=\coverheight, left=-\bleedwidth-\coverwidth-\spinewidth, top=-\bleedwidth, } \begin{document} \begin{bookcover} \bookcovercomponent{color}{bg whole}{ % Use "bg whole" instead of "whole page" top color=LightBlue, bottom color=LightBlue} % % Title % \bookcovercomponent{normal}{front}[55mm,10mm,10mm,30mm]{ {\fontsize{48}{48}\selectfont \bfseries This is the title of } } \bookcovercomponent{normal}{front}[55mm,10mm,10mm,50mm]{ {\fontsize{48}{48}\selectfont \bfseries the book on multiple } } \bookcovercomponent{normal}{front}[55mm,10mm,10mm,70mm]{ {\fontsize{48}{48}\selectfont \bfseries lines } } % % Edition % \bookcovercomponent{normal}{front}[100mm,10mm,10mm,90mm]{ {\fontsize{30}{30}\selectfont \bfseries First Edition } } % % place 4"x4" graphics image here % %\bookcovercomponent{normal}{front}{ % \begin{tikzpicture} % % Center of the panel is (\width/2, \height/2) % \node[anchor=center] at ({\width/2},{\height/2}) { % \includegraphics[width=0.8\width]{aBookFrontCoverGraphics.pdf} % }; % \end{tikzpicture} %} % % Author's name % \bookcovercomponent{normal}{front}[100mm,10mm,10mm,280mm]{ {\fontsize{24}{24}\selectfont \bfseries Author's Name } } % % spine % \bookcovercomponent{normal}{spine}[2mm,2mm,2mm,2mm]{% \vspace*{30mm}\centering\rotatebox{90}{\huge\textcolor{NavyBlue}{Authors Name} \qquad Title}} % % back cover % \bookcovercomponent{normal}{back}[15mm,10mm,15mm,10mm]{Some back cover text...} \end{bookcover} \end{document}
- How can I programmatically generate complex TikZ graphs using symbolic algebraic shorthand?by gete on January 21, 2026 at 6:18 pm
I often need to create large-scale, publication-quality graphs (e.g., K-ary trees, neural network layers, or dense star graphs) for my documents. Writing hundreds of lines of \node and \draw commands manually is error-prone and time-consuming. While tikz-network and forest are excellent, they still require significant manual entry for non-standard generative structures. I am looking for a way to generate these structures using symbolic expressions such as X1+X2+...+ Xn and export them directly to TikZ code for LaTeX of Overleaf documents.
- Long division with xlop and spacingby Martin on January 21, 2026 at 5:19 pm
Here is a code to produce a display for long division using the xlop package. This looks nice, but when using this code together with \onehalfspacing (from the setspace package) or while specifying a top margin with the geometry package (such as \usepackage[top=1.5cm]{geometry}), the division gets shown offset (even more, if both \usepackage[top=1.5cm]{geometry} and \onehalfspacing are used. How can the code be changed to get rid of this offset? I was thinking of locally changing the spacing and top margin only within the code, but do not know how to do that. MWE: \documentclass[a4paper,12pt,ngerman]{article} \usepackage[top=1.5cm]{geometry} \usepackage{setspace} \onehalfspacing \usepackage{tikz} \usepackage{xlop} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand\tikzmark[1]{% \tikz[remember picture,overlay] \node[inner xsep=0pt,outer sep=0pt,anchor=base,yshift=0.5ex] (#1) {};} \makeatletter \def\op@divdisplayone{% \begingroup \op@count@z=\z@\relax \op@count@i=\OP@a@w \loop \ifnum\@nameuse{OP@a@\the\op@count@i}=0 \advance\op@count@i by-1 \advance\op@count@z by1 \repeat \op@count@i=\op@firstlength \advance\op@count@i by\op@count@z \xdef\op@firstlength{\the\op@count@i}% \setbox2=\vbox{% \op@count@i=\op@firstlength \advance\op@count@i by1 \hbox{% \ifx\op@displayintermediary\op@string@none\else % add 0.25 \ifx\op@displayintermediary\op@string@None\else % end add 0.25 \kern\opcolumnwidth \advance\op@count@i by1 % add 0.25 \fi % end add 0.25 \fi \ifop@dividendbridge \vrule width0pt depth0pt height\oplineheight \opvline(0,1){0.4}% \ophline(0,1){\op@firstlength}% \opvline(\op@firstlength,1){0.4}% \fi \op@display{operandstyle.1}{a}\tikzmark{a}% \ifnum\op@shift=0\relax\else \op@count@v=\op@shift \advance\op@count@v by\OP@a@d \oplput(-\the\op@count@v,0){\op@strikedecimalsepsymbol}% \fi }% \op@count@z=\OP@q@w \op@count@ii=1\relax \ifx\op@displayintermediary\op@string@none \advance\op@count@i by-1\relax % add 0.25 \else\ifx\op@displayintermediary\op@string@None \advance\op@count@i by-1\relax % end add 0.25 \else \op@count@iv=\@nameuse{OP@q@\the\op@count@z}\relax \op@count@iii=\op@count@i \advance\op@count@iii by-\@nameuse{OP@T\the\op@count@iv @w}% \hbox{% \ifx\op@voperator\op@string@center \oplput(0,0.5){\op@subsymbol}% \else\ifx\op@voperator\op@string@top \oplput(0,1){\op@subsymbol}% \else \oplput(0,0){\op@subsymbol}% \fi\fi \ophline(1,-0.25){\op@firstlength}% \advance\op@count@ii by1 \kern\op@count@iii\opcolumnwidth \op@display{intermediarystyle.1}% {T\the\op@count@iv}% }% % modif 0.25 \fi\fi % end modif 0.25 {\global\setbox4=\hbox{}\setbox4=\box4}% \loop \advance\op@count@z by-1 \advance\op@count@i by1\relax \ifnum\op@count@z>0\relax \op@count@iv=\@nameuse{OP@q@\the\op@count@z}\relax \ifnum\op@count@iv=0 \ifx\op@displayintermediary\op@string@all \op@count@v=\op@count@i \advance\op@count@v by-\@nameuse{OP@R\the\op@count@ii @w}% \hbox{% \kern\op@count@v\opcolumnwidth \op@display{remainderstyle.\the\op@count@ii}% {R\the\op@count@ii}% }% \op@count@iii=\op@count@i \advance\op@count@iii by-\@nameuse{OP@T\the\op@count@iv @w}% \hbox{% \kern\op@count@v\opcolumnwidth \ifx\op@voperator\op@string@center \oplput(-1,0.5){\op@subsymbol}% \else\ifx\op@voperator\op@string@top \oplput(-1,1){\op@subsymbol}% \else \oplput(-1,0){\op@subsymbol}% \fi\fi \ophline(0,-0.25){\@nameuse{OP@R\the\op@count@ii @w}}% \kern-\op@count@v\opcolumnwidth \kern\op@count@iii\opcolumnwidth \op@display{intermediarystyle.\the\op@count@ii}% {T\the\op@count@iv}% }% \else \ifnum\@nameuse{OP@R\the\op@count@ii @w}=2 \ifnum\@nameuse{OP@R\the\op@count@ii @2}=0 \op@makebox{1}{0}{remainderstyle.\the\op@count@ii.1}{zero}% \setbox4=\hbox to\opcolumnwidth{\hss\box0\hss}% \fi \fi \fi \advance\op@count@ii by1\relax \else \op@count@v=\op@count@i \advance\op@count@v by-\@nameuse{OP@R\the\op@count@ii @w}% \ifvoid4\relax\else \advance\op@count@v by-1 \fi \hbox{% \kern\op@count@v\opcolumnwidth\copy4 \op@display{remainderstyle.\the\op@count@ii}% {R\the\op@count@ii}% }% \advance\op@count@ii by1\relax \ifx\op@displayintermediary\op@string@none % add 0.25 \else\ifx\op@displayintermediary\op@string@None % end add 0.25 \else \op@count@iii=\op@count@i \advance\op@count@iii by-\@nameuse{OP@T\the\op@count@iv @w}% \hbox{% \kern\op@count@v\opcolumnwidth \ifx\op@voperator\op@string@center \oplput(-1,0.5){\op@subsymbol}% \else\ifx\op@voperator\op@string@top \oplput(-1,1){\op@subsymbol}% \else \oplput(-1,0){\op@subsymbol}% \fi\fi \advance\op@count@ii by-1 \ifvoid4\relax \ophline(0,-0.25){\@nameuse{OP@R\the\op@count@ii @w}}% \else \ophline(0,-0.25){\@nameuse{OP@T\the\op@count@iv @w}}% \ophline(\@nameuse{OP@T\the\op@count@iv @w},-0.25){1}% {\setbox4=\box4}% \fi \advance\op@count@ii by1 \kern-\op@count@v\opcolumnwidth \kern\op@count@iii\opcolumnwidth \op@display{intermediarystyle.\the\op@count@ii}% {T\the\op@count@iv}% }% % modif 0.25 \fi\fi % end modif 0.25 \fi \repeat \advance\op@count@i by-1 \op@count@iii=\op@count@i \advance\op@count@iii by-\@nameuse{OP@R\the\op@count@ii @w}% \hbox{% \kern\op@count@iii\opcolumnwidth \op@display{remainderstyle.\the\op@count@ii}% {R\the\op@count@ii}% }% }% \setbox3=\vbox{% \op@count@v=\op@max{\OP@qq@w}{\OP@b@w} \hbox{%\ophline(-0.5,-0.25){\the\op@count@v.5}% :\op@display{operandstyle.2}{b}=\op@display{resultstyle}{qq} %%This seems to be the divisor \ifnum\op@shift=0\relax\else \op@count@v=\op@shift \advance\op@count@v by\OP@b@d \oplput(-\the\op@count@v,0){\op@strikedecimalsepsymbol}% \fi} %\hbox{\op@display{resultstyle}{qq}} %%This seems to be the result }% \dimen0=\ht2 \ifdim\dimen0>\ht3 \ht3=\ht2 \else \ht2=\ht3 \fi \ifx\op@voperation\op@string@top \dimen0=\ht2 \advance\dimen0 by-0.5\oplineheight \ht2=0.75\oplineheight \ht3=0.75\oplineheight \dp2=\dimen0 \dp2=\dimen0 \fi \setbox1=\hbox{% \box2 % \kern0.5\opcolumnwidth % \kern-0.5\op@hrulewidth % \ifx\voperation\op@string@top % \vrule width\op@hrulewidth % \else % \vrule width\op@hrulewidth % \fi % \kern0.5\opcolumnwidth % \kern-0.5\op@hrulewidth \begin{tikzpicture}[remember picture,overlay] \node[anchor=west,inner xsep=0pt] at (a) {\box3}; \end{tikzpicture} }% \ifx\op@voperation\op@string@center \setbox1=\hbox{$\vcenter{\box1}$}% \fi \leavevmode\box1 \endgroup } \makeatother %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{center} \opdiv[voperator=bottom,voperation=top,displayintermediary=all,decimalsepsymbol={,},shiftdecimalsep=divisor,maxdivstep=2,columnwidth=0.6em,decimalsepwidth=0.3em]{6543}{123} \end{center} \end{document} EDIT: The first image shows the output without \usepackage[top=1.5cm]{geometry} and \onehalfspacing, the second image with \usepackage[top=1.5cm]{geometry} and \onehalfspacing. Here the dividend is slightly higher than the divisor.
- How do I apply some quality control for l3keys and multichoices?by lukascbossert on January 21, 2026 at 3:24 pm
In my keys I have two "special" keys, gender and period. While gender must only have one value of m,f,d, the key period can have any of 1,2,3 (also 1,3 or 2,3 is possible). The order of number doesn’t matter. But it is important that it is one of those numbers, nothing else (besides the ,). For gender I was able to set up such a quality control measure: gender .choices:nn = { m , f , d } {\DTLnewdbentry{person}{gender}{#1}}, gender / unknown .code:n = {\msg_warning:nnnn { person } { invalid-value }{ #1 }{ m,f,d }}, but my attempt to use multichoices:nn fails: period .multichoices:nn = {1,2,3} { \clist_put_right:Nn \l_dfg_person_period_clist { #1 }}, \documentclass{article} \usepackage{datatool} \ExplSyntaxOn \msg_new:nnn { person } { unknown-key } { Key~ '\l_keys_path_str'~ is~ unknown~ and~ being~ ignored.^^J^^J You~passed~the~value~'#1'~ to~ that~ key.^^J Doublecheck~for~spelling~errors.~^^J The~ item~ is~ \msg_line_context: } \msg_new:nnn { person } { invalid-value } { Invalid~value~'#1'~for~key~'\l_keys_path_str'.^^J^^J Allowed~values~are:~'#2'.~^^J The~ item~ is~ \msg_line_context: } \clist_new:N \l_dfg_person_period_clist \keys_define:nn { person } { unknown .code:n = { \msg_warning:nnn { person } { unknown-key } {#1}}, unknown .default:V = \c_novalue_tl, % ---------- id ---------- id .code:n = \DTLnewdbentry{person}{id}{#1}, id .value_required:n = true, % ---------- firstname ---------- firstname .code:n = \DTLnewdbentry{person}{firstname}{#1}, % ---------- lastname ---------- lastname .code:n = \DTLnewdbentry{person}{lastname}{#1}, % ---------- gender ---------- gender .choices:nn = { m , f , d } {\DTLnewdbentry{person}{gender}{#1}}, gender / unknown .code:n = {\msg_warning:nnnn { person } { invalid-value }{ #1 }{ m,f,d }}, gender .value_required:n = true, % ---- period with multiple choices ---- period .initial:n = \clist_clear:N \l_dfg_person_period_clist, period .multichoices:nn = {1,2,3} { \clist_put_right:Nn \l_dfg_person_period_clist { #1 }}, % period / 1 .code:n = { \clist_put_right:Nn \l_dfg_person_period_clist { 1 }}, % period / 2 .code:n = { \clist_put_right:Nn \l_dfg_person_period_clist { 2 }}, % period / 3 .code:n = { \clist_put_right:Nn \l_dfg_person_period_clist { 3 }}, period .code:n = \DTLnewdbentry{person}{period}{ \clist_use:N \l_dfg_person_period_clist}, period / unknown .code:n = {\msg_warning:nnnn { person } { invalid-value }{ #1 }{ 1,2,3 }}, } % ---------------------------------------------------------------- % Interface % ---------------------------------------------------------------- \NewDocumentCommand{\addEntry}{ O{#2} m m } { \DTLifdbexists{#2}{}{ \DTLnewdb{#2} } \DTLnewrow{#2} \keys_set:nn { #1 } { #3 } } \NewDocumentCommand{\getEntry}{o m m O{id}} { \DTLgetvalueforkey{\thevalue}{#3}{#1}{#4}{#2} \DTLifnullorempty{\thevalue}{}{ \thevalue } } \ExplSyntaxOff % ---------------------------------------------------------------- % Test data % ---------------------------------------------------------------- \addEntry{person}{ id = {p1}, firstname = {Alice}, lastname = {Smith}, gender = {m}, period = {1}, } \addEntry{person}{ id = {p2}, firstname = {Bob}, lastname = {Brown}, gender = {m}, period = {2,3}, } % ---------------------------------------------------------------- \begin{document} \section*{Demo of the tiny interface} PI name: \textbf{\getEntry[person]{p1}{lastname}}\\ PI gender: \textbf{\getEntry[person]{p1}{gender}}\\ Periods (p1): \textbf{\getEntry[person]{p1}{period}}\\ Periods (p2): \textbf{\getEntry[person]{p2}{period}} \end{document}
- Defining tabular column with resuming enumerateby user1 on January 21, 2026 at 12:14 pm
I have a follow up question, to this one. I want to define a column type, which creates a resumed enumerated list over several rows. I do not use [series=table,nosep,leftmargin=*,before=\vspace{-0.5\baselineskip}] in the following code. I got the solution using minipage previously from an other problem. But please feel free to change this. \documentclass{article} \usepackage{enumitem} \usepackage{array} \makeatletter \newcolumntype{e}[1]{% >{\minipage[t]{\linewidth}\let\\\tabularnewline \enumerate %TODO does not work: [resume*] \addtolength{\rightskip}{0pt plus 50pt}% for raggedright \setlength{\itemsep}{-\parsep}}% p{#1}% <{\@finalstrut\@arstrutbox\endenumerate\endminipage}} \makeatother \begin{document} text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text \begin{tabular}{|e{5cm}|p{5cm}|} \hline \multicolumn{1}{|p{5cm}|}{Column 1 Heading } & Column 2 Heading \\ \hline \item Item 1 & no items\\ \hline \item Perhaps this text could go on for a while too & no items 2\\ \hline \end{tabular} text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text \end{document}
- Typesetting old Arabic manuscripts (without dots)by imdk4242 on January 21, 2026 at 11:31 am
In the study of old Arabic manuscripts, the letter are commonly written without dots below/above different Arabic letter (b/n/t/tha/dhal/etc.). Is it possible to replicate this old writing using arabluatex package or similar? Sample text to be found here (link, Corpus Coranicum) Update #1: A suitable use it to set in arabluatex (ekdosis) to get TEI xml-compliant editions. Sample code: \documentclass{scrartcl} \usepackage{fontspec} \usepackage[english]{babel} \babelfont{rm}{Old Standard} \usepackage[fullvoc]{arabluatex} \SetArbEasy \begin{document} \txarb{ ٮسم الله الرحمں الرحٮم } \arb[novoc]{bismi llAhi l-ra.hmAni l-ra.hImi} \end{document} Output: (The yaa with/without dots is documented as part of the package) A work around(?) could be (mis)using the \newarbmark{} and define seperat old Arabic letters, e.g. as illustrated for the tanwin here: \newarbmark{Y}{^^^^0649}{} \arb{hud\arbcolor[red]{aN\arbnull{_A}}\arbmark{Y}} \arb[trans]{hud\arbcolor[red]{aN\arbnull{_A}}\arbmark{Y}}
- How to change color of equals sign without disturbing alignment?by Arya1050 on January 21, 2026 at 8:42 am
\documentclass{beamer} \begin{document} \begin{frame} \begin{align*} A &= B \\ &\textcolor{blue}{=} C \end{align*} \end{frame} \end{document} I want the last equals sign to be colored blue, but this code disrupts the alignment. It also brings the 'C' closer to the equals sign. How can I fix this? ChatGPT turned out to be of no help. Note: I don't have any particular purpose for doing this. I was just experimenting out of curiosity on my actual slides. Just wanted to see if this problem could be solved in any case.