• Font package, and disabling feature in main document
    by True-Dig on June 29, 2026 at 1:59 am

    We packaged a font so it can be reusable in different documents (see below). Is it the right way to do it? Comments welcome. The package is then used by simply adding \usepackage{ourfont}. We tried to look at various font packages but it seems to vary much between implementations... In a document (so without modifying the package), we want to disable ligatures for non-italic, or maybe just disable the Discretionary ones, tbd. Again, what is the right way to do this? This font (legally) comes from Adobe and is split into several .otf files for weight/style/optical sizes, hence the complexity of the loading... This is first way we do this, and fontspec seems to offer many solutions. All comments welcome. Thanks. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{ourfont}[2026-06-28] \RequirePackage{fontspec} \setmainfont{OurFont}[ NFSSFamily = OurFont, Numbers = {OldStyle,Proportional}, Ligatures = {Common,Discretionary}, UprightFeatures = { Font = *, SizeFeatures = { {Size = -8.9, Font = *-Capt}, {Size = 9.0-14.9, Font = *}, {Size = 15.0-22.9, Font = *-Subh}, {Size = 23.0-, Font = *-Disp}, }, }, ItalicFeatures = { Font = *-It, SizeFeatures = { {Size = -8.9, Font = *-ItCapt}, {Size = 9.0-14.9, Font = *-It}, {Size = 15.0-22.9, Font = *-ItSubh}, {Size = 23.0-, Font = *-ItDisp}, }, }, BoldFeatures = { Font = *-Bd, SizeFeatures = { {Size = -8.9, Font = *-BdCapt}, {Size = 9.0-14.9, Font = *-Bd}, {Size = 15.0-22.9, Font = *-BdSubh}, {Size = 23.0-, Font = *-BdDisp}, }, }, BoldItalicFeatures = { Font = *-BdIt, SizeFeatures = { {Size = -8.9, Font = *-BdItCapt}, {Size = 9.0-14.9, Font = *-BdIt}, {Size = 15.0-22.9, Font = *-BdItSubh}, {Size = 23.0-, Font = *-BdItDisp}, }, }, FontFace = {l}{n}{ Font = *-LtDisp, }, FontFace = {l}{it}{ Font = *-LtItDisp, }, FontFace = {sb}{n}{ Font = *-Smbd, SizeFeatures = { {Size = -8.9, Font = *-SmbdCapt}, {Size = 9.0-14.9, Font = *-Smbd}, {Size = 15.0-22.9, Font = *-SmbdSubh}, {Size = 23.0-, Font = *-SmbdDisp}, }, }, FontFace = {sb}{it}{ Font = *-SmbdIt, SizeFeatures = { {Size = -8.9, Font = *-SmbdItCapt}, {Size = 9.0-14.9, Font = *-SmbdIt}, {Size = 15.0-22.9, Font = *-SmbdItSubh}, {Size = 23.0-, Font = *-SmbdItDisp}, }, }, ] \def\rmdefault{OurFont} \renewcommand{\familydefault}{\rmdefault}

  • draw line shadow or outline
    by Abd el hamid BENAOUM on June 29, 2026 at 12:01 am

    I am trying to draw a line in TikZ between two arbitrary points, for example, from $A(0,0)$ to $B(3,5)$, where the gradient (degradation) runs perpendicularly (transversely) to the path itself. The line should be solid black in the exact center and fade smoothly to white/transparent on both the top and bottom edges, looking like a soft or blurred brush stroke. like this: I managed to approximate this by drawing a manual path with calc offsets and calculating the specific shading angle manually: \begin{tikzpicture} % Define coordinates for the horizontal path (center-line) % A is the starting point, B is the ending point \coordinate (A) at (0,0); \coordinate (B) at (6,0); % Create a vertical degradation (fading) using a shaded rectangle. % We define a rectangle centered on the line, where: % - top color fades to white % - bottom color fades to white % - middle color is solid black % Adjust the height (e.g., 0.6cm) to make the bar and blur thicker or thinner. % Adjust the width (the X coordinate of B) to make it longer or shorter. \shade[top color=white, bottom color=white, middle color=black, line cap=butt] ($(A) + (0, 0.3cm)$) rectangle ($(B) + (0, -0.3cm)$); \end{tikzpicture}

  • Column break from multicol package seems to be ignored
    by Maniel SOTOMAYOR on June 28, 2026 at 10:57 pm

    I'm trying to work two parallel columns of text with the multicol package. When I try to break columns it seems to be ignored. Here's a MWE: \documentclass[b6paper, 10pt, twoside, openright, final]{memoir} \setlrmarginsandblock{1.5cm}{.5cm}{*} \setulmarginsandblock{1.5cm}{*}{1} \checkandfixthelayout{} \usepackage{multicol} \usepackage{xcolor} \usepackage{lipsum} \title{ My Memoir } \author{M} \date{June 28, 2026} \begin{document} \begin{multicols}{2} \parbox[t]{\columnwidth}{% \lipsum[1][1-2] } \vfill\ \columnbreak \parbox[t]{\columnwidth}{% \lipsum[2][1-2] } \vfill\ \end{multicols} \end{document} The text continues on the same paragraph without switching columns. How can I make sure the text switches from the left column into the right column?

  • How to add vertical space between index entries in LaTeX (without idxlayout)
    by test on June 28, 2026 at 6:01 pm

    I would like to insert a 3 pt vertical space between index entries. How can I achieve this? I have already tried unsuccessfully using \renewcommand{\indexspace}{\vspace{6pt}} and \renewcommand\@idxitem{\par\vspace{3pt}}. Here is my MWE: \documentclass{scrbook} \usepackage{imakeidx} \usepackage{hyperref} \usepackage{showframe} \makeatletter \renewcommand{\@idxitem}{\par}% remove \hangindent40\p@ \makeatother \makeindex \makeatletter \patchcmd{\idx@@heading}{\section*}{\chapter*}{}{} \makeatother \makeatletter %\renewcommand\@idxitem{\par} \renewcommand\@idxitem{\par\vspace{3pt}} \renewcommand\subitem{\par} \renewcommand\subsubitem{\par} \makeatother \makeatletter \renewcommand{\indexspace}{\vspace{30pt}} \makeatother \setlength{\itemsep}{3pt} \setlength{\parsep}{0pt} \setlength{\parskip}{0pt} \begin{document} \section{First section} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam rutrum aliquet elit in pellentesque. Proin nulla eros, consequat nec convallis vel, vulputate vitae purus\index{purusu rusuru surus Schönheitswahnsinn}. Pellentesque consequat euismod sapien, ac porttitor diam laoreet id. Pellentesque habitant morbi tristique senectus\index{senectus} et netus et malesuada fames ac turpis egestas. Sed vehicula magna orci, nec congue sem congue ac. Sed fringilla aliquam interdum. Nullam quis commodo massa.\index{Schönheitswahnsinn abc def ghi jklmnopq} \printindex \end{document}

  • Table of contents: Page numbers for part and multiline centered title
    by Martin on June 28, 2026 at 3:44 pm

    I want to adjust the table of contents such that The names of \parts are centered in the toc and appear with page numbers and The name of the toc has two lines that are centered. When I center the \parts, and add page numbers, these are not aligned with the page numbers of my sections. How can I align them properly? When using two lines in the name of the toc, the centering does not work. MWE: \documentclass{report} \usepackage{lipsum} \usepackage[newparttoc]{titlesec} \usepackage{titletoc} \usepackage{tocloft} \titleformat{\part}[display]{\Huge}{}{20pt}{\thispagestyle{empty}} \titlecontents{part}[0pt]{\addvspace{2pc}\centering\large\bfseries}{\hfill}{}{\hfill \contentspage} \setlength{\cftbeforesecskip}{6pt} \setlength{\cftbeforetoctitleskip}{0pt} \renewcommand{\cftpnumalign}{c} \renewcommand{\cfttoctitlefont}{\hfil\Huge\scshape} \renewcommand{\cftaftertoctitle}{\hfil} \setcounter{secnumdepth}{0} \setcounter{tocdepth}{1} \begin{document} \renewcommand{\contentsname}{Contents title \\ \small{contents title part 2}} \tocloftpagestyle{empty}{\pagestyle{empty} \tableofcontents \clearpage} \part{First Part} \section{a1} \lipsum[1-100] \section{a2} \lipsum[1-100] \section{a3} \lipsum[1-100] \part{Second PartSecond Part} \section{a1} \lipsum[1-100] \section{a2} \lipsum[1-100] \section{a3} \lipsum[1-100] \part{Third PartThird PartThird Part} \section{a1} \lipsum[1-100] \section{a2} \lipsum[1-100] \section{a3} \lipsum[1-100] \end{document}

  • stacking diacritics to small capitals
    by Antonis on June 28, 2026 at 1:36 pm

    A user ask to stack diacritics at small capitals in NewCM. Small Capitals are accessible with scmp from lowercase and with c2sc from uppercase. But stacking fails. When say A is followed by U+0304 (combining macron) with c2sc enabled the letter switches to the plain capital A. When U+0304 is removed the A in small capital is produced. NewCM contains information for stacking at its small capitals too but it seems that there is a but in the engine or something else happens which I do not understand. Here is a MWE: \documentclass{article} \usepackage[default]{fontsetup} \begin{document} \addfontfeatures{RawFeature=+c2sc} \textsc{ā, ī, ū, ṭ, ḍ, ḷ, ṁ, ṃ, ṇ, ṅ, ñ} \textsc{a}̄ \textsc{a} A Ā \end{document} Notice that sc n with tilde works because this character is precomposed in the font. But we can not expect the font to have all characters precomposed. This is why we have stacking. The output is erratic. The line \textsc{a}̄ is not a result of stacking but of negative width of the macron, this is why it is not centered. Notice that you may find another font that gives correct output. But this will happen just because it has the above characters precomposed. Stacking still fails. We cannot precompose everything.

  • Straight lines in a matrix
    by Andy Fletcher on June 28, 2026 at 12:14 pm

    I'm trying to draw straight lines in a matrix using nicematrix, and I achived the code: \documentclass{article} \usepackage{nicematrix,tikz} \begin{document} \begin{equation*} \begin{bNiceMatrix} \CodeBefore[create-cell-nodes] \begin{tikzpicture} %\draw[blue,-] (3-1) -- (4-2) ; %\draw[blue,-] (4-2) -- (3-4) ; \draw[blue,-] (3-1.north west) -- (4-2.south east) ; \draw[blue,-] (4-2.south east) -- (3-4.north east) ; \end{tikzpicture} \Body a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{43} & a_{44} \end{bNiceMatrix} \end{equation*} \end{document} My problem is the straight lines are not centered in the entries of the matrix (see image below); I considered also \draw[blue,-] (3-1) -- (4-2) ; \draw[blue,-] (4-2) -- (3-4) ; instead of \draw[blue,-] (3-1.north west) -- (4-2.south east) ; \draw[blue,-] (4-2.south east) -- (3-4.north east) ; but in this case the two line are not linked. Any hint (desirably keeping the matrix created by nicematrix)? Thanks.

  • 'atableau.ini' not found
    by Sebastiano on June 28, 2026 at 11:29 am

    I use the v. 2.2.1 of atableau. Using this code this morning \documentclass{article} \usepackage{tikz} \usepackage{atableau} \begin{document} \Tableau[color theme=classic,box style={minimum size=4mm}]{123,456,789} \end{document} I get the error: ! LaTeX Error: File 'atableau.ini' not found. For immediate help type H <return>. ... l.59 \ior_open:Nn \g_tmpa_ior { atableau.ini } ? What happened?

  • ! TeX capacity exceeded, sorry [save size=500000]. How to increase limit?
    by Nasser on June 28, 2026 at 7:16 am

    I have large document with many \label{} and another document which does reference on these. This below is MWE to produce this error I get on my real document ! TeX capacity exceeded, sorry [save size=500000]. I tried to increase it in texmf.cnf but had no effect. (did rehash and rebuild formats, etc...) Is this hardcoded in lualatex? Is there a way to increase it? I know how to rebuild lualatex from source. I just now do not know where to look for this limit if it is hardcoded there or not to change it. \documentclass{book} \usepackage{hyperref} \begin{document} \chapter{A} \directlua{ for i = 1, 800000 do tex.print("\\section{" .. i .. "}\\label{".. i .."}") tex.print("some text") end } \end{document} Compile with lualatex gives (/usr/local/texlive/2026/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty (/usr/local/texlive/2026/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty ))) (/usr/local/texlive/2026/texmf-dist/tex/latex/l3backend/l3backend-luatex.def) (./A.aux) (./A.out) (./A.out ! TeX capacity exceeded, sorry [save size=500000]. \Hy@pstringdef ...->\begingroup \edef ~{\string ~} \xdef \Hy@gtemp {\pdf@esca... l.499937 ...4\0009\0009\0009\0003\0006}{chapter.1} % 499937 382 words of node memory still in use: 2 hlist, 1 rule, 1 dir, 3 kern, 1 glyph, 3 attribute, 49 glue_spec, 3 attrib ute_list, 1 if_stack, 1 write nodes avail lists: 2:12,3:2,4:1,5:3,6:1,7:2,9:3 ! ==> Fatal error occurred, no output PDF file produced! Transcript written on A.log. > info >which lualatex /usr/local/texlive/2026/bin/x86_64-linux/lualatex >lualatex --version This is LuaHBTeX, Version 1.24.0 (TeX Live 2026) Development id: 7724 I asked google AI but it did not know.

  • How to draw a diagram in math-mode or in-line LaTeX?, for example, the following kind of diagram? What packages do I require?
    by Sagnik Roy on June 28, 2026 at 7:04 am

    I need to draw the following and similar kind of diagrams with labels inside an LaTeX article.

  • How to remove the `:n` specifier when calling `\getdata:n { h }`?
    by xcn on June 28, 2026 at 4:41 am

    If I replace in: \cs_new:Nn \getdata:n { \prop_item:Nn \g_landingslab_data_prop {#1} } \cs_set:Npn \getdata #1 { \prop_item:Nn \g_landingslab_data_prop {#1} } then I can use \getdata{ h } instead of \getdata:n { h } , is it the correct way to do this ? \documentclass[12pt]{article} \usepackage[UTF8]{ctex} \usepackage{amsmath,siunitx} \ExplSyntaxOn \prop_new:N \g_landingslab_data_prop \cs_new:Nn \getdata:n { \prop_item:Nn \g_landingslab_data_prop {#1} } \cs_new:Nn \putdata:nn { \prop_put:Nnn \g_landingslab_data_prop {#1} {#2} } \keys_define:nn { landingslab } { width .code:n = { \putdata:nn { width } {#1} }, length .code:n = { \putdata:nn { length } {#1} }, h .code:n = { \putdata:nn { h } {#1} }, c .code:n = { \putdata:nn { c } {#1} }, d .code:n = { \putdata:nn { d } {#1} }, s .code:n = { \putdata:nn { s } {#1} }, frontfaceload .code:n = { \putdata:nn { frontfaceload } {#1} }, rearfaceload .code:n = { \putdata:nn { rearfaceload } {#1} }, } \cs_new_protected:Nn \l_landingslab_calc:n { \keys_set:nn { landingslab } {#1} \putdata:nn { h0 } { \fp_eval:n { \getdata:n { h } - \getdata:n { c } - \getdata:n { d } / 2 } } landing~slab~thickness: ~$ h = \getdata:n { h } \, \unit{mm} $\par slab~effective~depth:~$ h\sb 0 = \getdata:n { h0 }\, \unit{mm} $\par } \NewDocumentCommand{\stairPTB}{m}{ \l_landingslab_calc:n {#1} } \ExplSyntaxOff \begin{document} \begin{center}{\large\bfseries civil air\ defence\ stair }\end{center} \stairPTB{ width = 1.5, length = 2.9, h = 120, c = 20, d = 12, s = 200, frontfaceload = 60, rearfaceload = 30 } \end{document}

  • Formatting long division without the longdivision package
    by Matt on June 28, 2026 at 3:59 am

    I'm trying to make a worksheet where students need to fill out parts of a long division statement. I usually use the longdivision package, but realized that I can't cover up parts of it for students to fill out. Any suggestions? I've attached an image for reference.

  • Auto-calculate max/min/average for blood glucose table with longtblr, stats auto refresh after compiling
    by mike on June 28, 2026 at 3:59 am

    I want to create a blood glucose monitoring log with longtblr. The core requirement is: after I input glucose numbers inside table cells, the weekly and monthly statistical results (max value, min value, average value) can be automatically recalculated and updated every time I compile the document. My original code uses static text for statistics, which means I have to rewrite all stats manually every time I add new glucose data. This is inefficient. I hope to use LaTeX built-in calculation packages to extract all valid numbers from table cells and generate statistics automatically. Full original code below: \documentclass[a4paper,landscape,10pt]{article} \usepackage{ctex} \usepackage{geometry} \usepackage{array} \usepackage{tabularray} \usepackage{ninecolors} \usepackage{xcolor} \geometry{left=1.2cm,right=1.2cm,top=1.8cm,bottom=1.8cm} \newcommand{\zz}[1]{\ifnum#1<10 0#1\else#1\fi} \pagecolor{cyan!10} \begin{document} \title{\Large Blood Glucose Monitoring Log} \author{Name: \underline{\hspace{4cm}} \quad Normal fasting range:4.4~7.0 mmol/L} \date{} \maketitle {\centering \begin{longtblr}[caption={Blood Glucose Log}] { colspec = {c c c c c c c c c Q[8cm,c]}, rowhead = 1, column{3} = {bg=pink!15}, column{4-5} = {bg=green!15}, column{6-7} = {bg=orange!15}, column{8-9} = {bg=blue!15}, vlines, hlines } Date &Weekday &Fasting &1h After Breakfast &2h After Breakfast &1h After Lunch &2h After Lunch &1h After Dinner &2h After Dinner & Remarks \\ % Week 1, Jun 1–7 2026-\zz{6}-\zz{1} & Monday & & & & & & & & \\ 2026-\zz{6}-\zz{2} & Tuesday & & & & & & & & \\ 2026-\zz{6}-\zz{3} & Wednesday & & & & & & & & \\ 2026-\zz{6}-\zz{4} & Thursday & & & & & & & & \\ 2026-\zz{6}-\zz{5} & Friday & & & & & & & & \\ 2026-\zz{6}-\zz{6} & Saturday & & & & & & & & \\ 2026-\zz{6}-\zz{7} & Sunday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jun 1–7】No measurements recorded this week}} & & & & & & & & & \\ % Week 2, Jun 8–14 2026-\zz{6}-\zz{8} & Monday & & & & & & & & \\ 2026-\zz{6}-\zz{9} & Tuesday & & & & & & & & \\ 2026-\zz{6}-\zz{10}& Wednesday & & & & & & & & \\ 2026-\zz{6}-\zz{11}& Thursday & & & & & & & & \\ 2026-\zz{6}-\zz{12}& Friday & & & & & & & & \\ 2026-\zz{6}-\zz{13}& Saturday & & & & & & & & \\ 2026-\zz{6}-\zz{14}& Sunday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jun 8–14】No measurements recorded this week}} & & & & & & & & & \\ % Week 3, Jun 15–21 2026-\zz{6}-\zz{15}& Monday & & & & & & & & \\ 2026-\zz{6}-\zz{16}& Tuesday & & & & & & & & \\ 2026-\zz{6}-\zz{17}& Wednesday & & & & & & & & \\ 2026-\zz{6}-\zz{18}& Thursday & & & & & & & & \\ 2026-\zz{6}-\zz{19}& Friday & & & & & & & & \\ 2026-\zz{6}-\zz{20}& Saturday & & & & & & & & \\ 2026-\zz{6}-\zz{21}& Sunday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jun 15–21】No measurements recorded this week}} & & & & & & & & & \\ % Week 4, Jun 22–28 (with sample data) 2026-\zz{6}-\zz{22}& Monday & & & & & & & & \\ 2026-\zz{6}-\zz{23}& Tuesday & & & & & & & & \\ 2026-\zz{6}-\zz{24}& Wednesday & & & & & & & & \\ 2026-\zz{6}-\zz{25}& Thursday & & & & & & & & \\ 2026-\zz{6}-\zz{26}& Friday &6.7(8:56) & & &7.3(13:41) & & &6.2(21:17) & Brisk walking for 40 minutes after lunch \\ 2026-\zz{6}-\zz{27}& Saturday &6.7(8:55) & & &6.8(14:09) & &7.0(20:44) & & Brisk walking after breakfast & lunch; aerobic exercise after dinner \\ 2026-\zz{6}-\zz{28}& Sunday &6.0(9:12) & & & & & & &Aerobic exercise after breakfast \\ \SetCell[c=10]{l}{\textbf{【Jun 22–28】Weekly stats: Fasting max 6.7, min 6.0, avg 6.47; 1h postprandial max 7.3, min 6.8, avg 7.05; 2h postprandial max 6.2, min 6.2, avg 6.2}} & & & & & & & & & \\ % Jun 29–30 2026-\zz{6}-\zz{29}& Monday & & & & & & & & \\ 2026-\zz{6}-\zz{30}& Tuesday & & & & & & & & \\ \SetCell[c=10]{l}{\color{blue}\textbf{【Whole June】Monthly stats: Fasting max 6.7, min 6.0, avg 6.47; 1h postprandial max 7.3, min 6.8, avg 7.05; 2h postprandial max 6.2, min 6.2, avg 6.2}} & & & & & & & & & \\ % July empty 2026-\zz{7}-\zz{1} & Wednesday & & & & & & & & \\ 2026-\zz{7}-\zz{2} & Thursday & & & & & & & & \\ 2026-\zz{7}-\zz{3} & Friday & & & & & & & & \\ 2026-\zz{7}-\zz{4} & Saturday & & & & & & & & \\ 2026-\zz{7}-\zz{5} & Sunday & & & & & & & & \\ 2026-\zz{7}-\zz{6} & Monday & & & & & & & & \\ 2026-\zz{7}-\zz{7} & Tuesday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jul 1–7】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{7}-\zz{8} & Wednesday & & & & & & & & \\ 2026-\zz{7}-\zz{9} & Thursday & & & & & & & & \\ 2026-\zz{7}-\zz{10}& Friday & & & & & & & & \\ 2026-\zz{7}-\zz{11}& Saturday & & & & & & & & \\ 2026-\zz{7}-\zz{12}& Sunday & & & & & & & & \\ 2026-\zz{7}-\zz{13}& Monday & & & & & & & & \\ 2026-\zz{7}-\zz{14}& Tuesday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jul 8–14】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{7}-\zz{15}& Wednesday & & & & & & & & \\ 2026-\zz{7}-\zz{16}& Thursday & & & & & & & & \\ 2026-\zz{7}-\zz{17}& Friday & & & & & & & & \\ 2026-\zz{7}-\zz{18}& Saturday & & & & & & & & \\ 2026-\zz{7}-\zz{19}& Sunday & & & & & & & & \\ 2026-\zz{7}-\zz{20}& Monday & & & & & & & & \\ 2026-\zz{7}-\zz{21}& Tuesday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jul 15–21】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{7}-\zz{22}& Wednesday & & & & & & & & \\ 2026-\zz{7}-\zz{23}& Thursday & & & & & & & & \\ 2026-\zz{7}-\zz{24}& Friday & & & & & & & & \\ 2026-\zz{7}-\zz{25}& Saturday & & & & & & & & \\ 2026-\zz{7}-\zz{26}& Sunday & & & & & & & & \\ 2026-\zz{7}-\zz{27}& Monday & & & & & & & & \\ 2026-\zz{7}-\zz{28}& Tuesday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Jul 22–28】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{7}-\zz{29}& Wednesday & & & & & & & & \\ 2026-\zz{7}-\zz{30}& Thursday & & & & & & & & \\ 2026-\zz{7}-\zz{31}& Friday & & & & & & & & \\ \SetCell[c=10]{l}{\color{blue}\textbf{【Whole July】No valid measurement data}} & & & & & & & & & \\ % August empty 2026-\zz{8}-\zz{1} & Saturday & & & & & & & & \\ 2026-\zz{8}-\zz{2} & Sunday & & & & & & & & \\ 2026-\zz{8}-\zz{3} & Monday & & & & & & & & \\ 2026-\zz{8}-\zz{4} & Tuesday & & & & & & & & \\ 2026-\zz{8}-\zz{5} & Wednesday & & & & & & & & \\ 2026-\zz{8}-\zz{6} & Thursday & & & & & & & & \\ 2026-\zz{8}-\zz{7} & Friday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Aug 1–7】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{8}-\zz{8} & Saturday & & & & & & & & \\ 2026-\zz{8}-\zz{9} & Sunday & & & & & & & & \\ 2026-\zz{8}-\zz{10}& Monday & & & & & & & & \\ 2026-\zz{8}-\zz{11}& Tuesday & & & & & & & & \\ 2026-\zz{8}-\zz{12}& Wednesday & & & & & & & & \\ 2026-\zz{8}-\zz{13}& Thursday & & & & & & & & \\ 2026-\zz{8}-\zz{14}& Friday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Aug 8–14】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{8}-\zz{15}& Saturday & & & & & & & & \\ 2026-\zz{8}-\zz{16}& Sunday & & & & & & & & \\ 2026-\zz{8}-\zz{17}& Monday & & & & & & & & \\ 2026-\zz{8}-\zz{18}& Tuesday & & & & & & & & \\ 2026-\zz{8}-\zz{19}& Wednesday & & & & & & & & \\ 2026-\zz{8}-\zz{20}& Thursday & & & & & & & & \\ 2026-\zz{8}-\zz{21}& Friday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Aug 15–21】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{8}-\zz{22}& Saturday & & & & & & & & \\ 2026-\zz{8}-\zz{23}& Sunday & & & & & & & & \\ 2026-\zz{8}-\zz{24}& Monday & & & & & & & & \\ 2026-\zz{8}-\zz{25}& Tuesday & & & & & & & & \\ 2026-\zz{8}-\zz{26}& Wednesday & & & & & & & & \\ 2026-\zz{8}-\zz{27}& Thursday & & & & & & & & \\ 2026-\zz{8}-\zz{28}& Friday & & & & & & & & \\ \SetCell[c=10]{l}{\textbf{【Aug 22–28】No measurements recorded this week}} & & & & & & & & & \\ 2026-\zz{8}-\zz{29}& Saturday & & & & & & & & \\ 2026-\zz{8}-\zz{30}& Sunday & & & & & & & & \\ 2026-\zz{8}-\zz{31}& Monday & & & & & & & & \\ \SetCell[c=10]{l}{\color{blue}\textbf{【Whole August】No valid measurement data}} & & & & & & & & & \\ \end{longtblr} } \section{Blood Glucose Statistical Summary} \subsection{Weekly Stats: Jun 22–28} \begin{itemize} \item Fasting glucose: Max 6.7, Min 6.0, Average 6.47 \item 1-hour postprandial glucose: Max 7.3, Min 6.8, Average 7.05 \item 2-hour postprandial glucose: Max 6.2, Min 6.2, Average 6.2 \end{itemize} \subsection{Whole June Monthly Stats} \begin{itemize} \item Fasting glucose: Max 6.7, Min 6.0, Average 6.47 \item 1-hour postprandial glucose: Max 7.3, Min 6.8, Average 7.05 \item 2-hour postprandial glucose: Max 6.2, Min 6.2, Average 6.2 \end{itemize} \subsection{July, August} No valid measurement data available. \end{document} My problems & requirements All current statistical texts are hard-coded static text. Every time I add or modify glucose values inside table cells, I have to manually recalculate and rewrite all max/min/average lines, which is tedious and error-prone. I need an automatic calculation mechanism: extract all decimal glucose numbers from specific table columns (Fasting, 1h postprandial, 2h postprandial), filter empty cells out, then compute maximum, minimum and average automatically. The computed weekly and monthly statistics should refresh automatically every time I compile the PDF, without manually editing statistic text blocks. The table uses longtblr for multi-page breaking and colored column backgrounds; please keep the original table layout, coloring and Chinese support (ctex package). Numbers inside cells have time suffix like 6.7(8:56); the parser only needs to extract the float value before the parenthesis and ignore time text. What packages/methods are suitable? Is it possible to use xfp, expl3 or pgfmath to collect numbers from longtblr cells and do batch statistics? If longtblr cannot expose cell contents to global macros, what alternative structure can I adopt to separate raw data storage and table display while retaining auto-statistics?

  • Display and execute Latex code with Piton
    by Mariuslp on June 27, 2026 at 10:36 pm

    I am trying to replicate an example in the nicematrix guide, using piton to display latex code, execute it, and add an annotation with the code. However, while the code gets correctly displayed and annotated, the matrix is not displayed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% MUST USE LuaLatex %%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{article} \usepackage{amsmath} \usepackage{piton} % using github version from 2026-06-27 since 'annotation' key comes from oct. 2025 and is not available on overleaf yet % copy-pasted files piton.lua and piton.sty % Taken from https://github.com/fpantigny/nicematrix/blob/master/nicematrix.tex#L78 \let\myrlap\rlap \PitonOptions{language = verbatim, detected-commands = {myrlap, emph,textsl}, splittable = 4} \SetPitonStyle{ Number = , Comment = } \ExplSyntaxOn \dim_new:N \l__pantigny_width_dim \keys_define:nn { pantigny } { width .dim_set:N = \l__pantigny_width_dim , annotation .code:n = \PitonOptions { annotation = #1 } } \NewPitonEnvironment { Code } { O { } } { \char_set_catcode_other:N | \cs_set_eq:NN \emph \emphase \dim_zero:N \l__pantigny_width_dim \PitonOptions { annotation,indent-broken-lines,continuation-symbol=\empty,end-of-broken-line=\empty, continuation-symbol-on-indentation=\hspace{2em} } \keys_set:nn { pantigny } { #1 } \color{gray} \dim_compare:nNnT \l__pantigny_width_dim > \c_zero_dim { \PitonOptions { width = \l__pantigny_width_dim } \begin{minipage}[c]{\l__pantigny_width_dim} } } { \dim_compare:nNnT \l__pantigny_width_dim > \c_zero_dim { \end{minipage} } } \ExplSyntaxOff \begin{document} displays the code but not the matrix: \begin{Code}[width=9cm] $\begin{pmatrix} \frac{1}{2} & -\frac{1}{2}\\ \frac{1}{3} & \frac{1}{4} \\ \end{pmatrix}$ \end{Code} matrix can get normally displayed: $\begin{pmatrix} \frac{1}{2} & -\frac{1}{2}\\ \frac{1}{3} & \frac{1}{4} \\ \end{pmatrix}$ \end{document} What am I doing wrong? Alternatively, if there is a way to obtain a similar result with tcblisting (code displayed and executed + pdf annotation using e.g. pdfcomment, that works for me too. Bonus points for latex syntax highlighting.

  • Beamer frame command without environment [duplicate]
    by Skeeve on June 27, 2026 at 7:37 am

    I would like to write two commands, \bframe and \eframe, so that \bframe Lorem ipsum \eframe is equivalent to \begin{frame} Lorem ipsum \end{frame} However the straightforward solution \newcommand{\bframe}{\begin{frame}} \newcommand{\eframe}{\end{frame}} leads to the error File ended while scanning use of \beamer@collect@@body, which I cannot understand. Any hints? P.S. The environment works just fine (but I don't understand why the separate commands behave in a different way): \newenvironment{myframe}{\begin{frame}}{\end{frame}}

  • Using two different fonts in math mode with LuaLaTeX
    by rahotep on June 27, 2026 at 5:55 am

    I'm trying to do the following in LuaLaTeX: having the main font be Arial; having the upper case letters in math font be Arial (if posible, not a strong requierement); having the lower case letters in math font be latin modern; having the numbers in math font be in Arial. To achieve these goals, I found out that the package mathastext could be a solution (as mentionned in a previous post), if used with the option "noletters". However, this option doesn't work as intended (or maybe I didn't understand what it was meant to do). Here is a MWE, with the result % !TEX TS-program = lualatex \documentclass[12pt,a4paper,french]{article} \usepackage{mathtools,amsfonts} % amsthm \usepackage[margin=1.5cm]{geometry} \usepackage{babel} \usepackage[no-math]{fontspec} % [no-math] \setmainfont{Arial} \usepackage[noletters,frenchmath*]{mathastext} % \MTmathstandardletters % \MTversion*{sans} \usepackage{lipsum} \begin{document} \lipsum[11] 1234567890 $1234567890$ $ABCDEFGHIKLMNOPQRSTUVWXYZ$ $abcdefghijklmnopqrstuvwxyz$ \end{document}

  • Arbitrary string for date ("saec\adddotspace 5") in biblatex-philosophy
    by Alexander Wittmann on June 27, 2026 at 1:05 am

    I want to include a manuscript in my bibliography. The date of the manuscript is "5. century (CE)", somewhere between 400 and 499, which reads as "saec. 5". That's all we know. The other entries are as usual. \documentclass{scrartcl} \begin{filecontents}{VergiliusRomanus.bib} @Book{Conte:VergilAeneis, editor = {Gian Biagio Conte}, title = {Publius Vergilius Maro \mkbibemph{Aeneis}}, publisher = {de Gruyter}, address = {Berlin}, year = 2019 } @Misc{VergiliusRomanus, author = {\mkbibemph{Vergilius Romanus}}, title = {Codex Vaticanus Latinus 3867}, date = {{saec\adddotspace 5}}, % <-- location = {Bibliotheca Apostolica Vaticana}, url = {https://commons.wikimedia.org/wiki/Category:Roman_Vergil} } \end{filecontents} \usepackage[main=german]{babel} \usepackage[style=philosophy-modern,sortlocale=de_DE,sorting=nyvt,% alldates=terse, labeldateparts=true, language=german,% origdate=comp, datezeros=false, backend=biber, % noroman=true, %? ]{biblatex} \addbibresource{VergiliusRomanus.bib} \begin{document} bla \nocite{*} \printbibliography{} \end{document}

  • Context: How to add small font verbatim text to image caption?
    by Nasser on June 26, 2026 at 11:59 pm

    I have been working with google AI on this for one hr, the AI even gave up and suggested I try tex stackexchange. I simply want to add caption to an image. Easy, right? but the trick part is that part of the caption is verbatim and in small font. Here is the latex version \documentclass{article} \usepackage{graphicx} \begin{document} \begin{figure} \centering \includegraphics[width=0.7\textwidth]{example-image-a} \caption[]{verview of EJB security concepts. \tiny{ejb\_sec\_1.vsd}} \end{figure} \end{document} Compiled with lualatex gives The problem is how to translate the caption to context. Here are two trials out of dozen or so and none of them worked. \starttext \placefigure {verview of EJB security concepts. {\tpx ejb\_sec\_1.vsd}}%caption {\externalfigure[dummy][width=0.7\textwidth]} \placefigure {verview of EJB security concepts. {\tpx\type{ejb_sec_1.vsd}}}%caption {\externalfigure[dummy][width=0.7\textwidth]} \stoptext Both give long compile errors. This below works \starttext \placefigure {verview of EJB security concepts. \type{ejb_sec_1.vsd}} {\externalfigure[dummy][width=0.7\textwidth]} \stoptext But I want the text ejb_sec_1.vsd to be in small/tiny font. And this is where google AI could not figure how to do it. It tried to explain to me why this works in Latex something related to immediate macro expansion but in context it is passing things to lua engine and all that. All of it was over my head. Is there a simple way to do this in context? TL 2026 on linux

  • Spacing TikZ pictures with \hspace and \vspace
    by LMPogoda on June 26, 2026 at 8:42 pm

    I have several TikZ pictures. These are a set of rectangles with some nodes inside, creating a grid on a page. These are spaced by \hspace horizontally and \vspace vertically. It mostly works unless \hspace is just after the \vspace. When I want to push a TikZ picture toward right margin after \vspace, \hspace doesn't work. I think it is related to a switch from vertical to horizontal mode, but I haven't mastered it yet. I removed the nodes from TikZ code, but what matters (and does not work) is left intact. \documentclass[a4paper]{article} \usepackage{geometry} \geometry{a4paper,top=10mm,bottom=27mm,hmargin=10.0mm} \usepackage{tikz} \usepackage{graphicx} \pagestyle{empty} \setlength\parindent{0pt} \begin{document} \begin{tikzpicture} \draw[rounded corners=2pt] (0,0) rectangle (60.00mm,60.00mm); \end{tikzpicture}\hspace{5mm} \begin{tikzpicture} \draw[rounded corners=2pt] (0,0) rectangle (60.00mm,60.00mm); \end{tikzpicture}\hspace{5mm} \begin{tikzpicture} \draw[rounded corners=2pt] (0,0) rectangle (60.00mm,60.00mm); \end{tikzpicture}\vspace{5mm} \hspace{65mm}\begin{tikzpicture} \draw[rounded corners=2pt] (0,0) rectangle (60.00mm,60.00mm); \end{tikzpicture}\hspace{5mm} \begin{tikzpicture} \draw[rounded corners=2pt] (0,0) rectangle (60.00mm,60.00mm); \end{tikzpicture}\vspace{5mm} \end{document} Edit: I replaced code snippet with complete document for better clarity.

  • tcolorbox: Using tikz pattern for drop shadow
    by Craig on June 26, 2026 at 6:21 pm

    MWE: \documentclass{standalone} \usepackage{tcolorbox,tikz} \usetikzlibrary{patterns,patterns.meta} \begin{document} \begin{tcolorbox}[ sharp corners, rounded corners=downhill, ] Hello world \end{tcolorbox} \end{document} I have a tcolorbox. I would like the drop shadow to be made of the tikz pattern north east lines. I know tikz patterns can be used to fill parts of the tcolorbox itself (such as with title style={preaction={fill=white},pattern=crosshatch dots,pattern color=black}), but can this same trick also be used for drop shadows?

  • How can I prevent align from overflowing the box?
    by D G on June 26, 2026 at 4:06 pm

    align overlows the box. How to avoid this? \documentclass[12pt]{article} \usepackage[a5paper,portrait]{geometry} \usepackage[poster]{tcolorbox} \usepackage{amsmath} \pagestyle{empty} \AddToHook{env/tcbposter/begin}{% \abovedisplayskip=0pt\relax \belowdisplayskip=0pt\relax \abovedisplayshortskip=0pt\relax \belowdisplayshortskip=0pt\relax } \begin{document} \begin{tcbposter}[ coverage = {spread}, poster ={showframe=true,columns=5,spacing=5pt}, boxes={arc=0pt,top=0pt,bottom=0pt,left=0pt,right=0pt,boxsep=0pt}, ] \posterbox{name=A,column=1,span=5,below=top}{% \noindent \begin{align*} (a + b)^2 &= a^2 + 2ab + b^2 & (a - b)^2 &= a^2 - 2ab + b^2 \end{align*} } \posterbox{name=B,column=1,span=5,below=A}{% \noindent \[ (a + b)^2 = a^2 + 2ab + b^2 \hspace{4cm} (a - b)^2 = a^2 - 2ab + b^2 \] } \end{tcbposter} \end{document}

  • Ordinal Date Suffixes not appearing using \datetime2 package
    by TheBeeTee on June 26, 2026 at 2:42 pm

    My document must display the date in US "long" format for all instances except the notary line where they want the fancy legalese "Sworn before me this Nth day of month, YYYY. I'm trying to define a new date format that does this and does not impact the day number as displayed in other instances. The global command \DTMlangsetup[en-US]{ord=raise} changes all instances, so not a solution. \documentclass[12pt, english]{article} \usepackage{babel} \usepackage[en-US]{datetime2} %\DTMlangsetup[en-US]{ord=raise}% This does not solve my problem. \DTMnewdatestyle{myFancyStyle}{% \renewcommand{\DTMdisplaydate}[4]{% \DTMenglishordinal{##3} day of % \DTMenglishmonthname{##2},~% \number##1% }% } \begin{document} Today's date in US long format: \textbf{\today} Today's date in pretentious legal format: \textbf{{\DTMsetdatestyle{myFancyStyle}\today}} It's supposed to be: \textbf{26\textsuperscript{th} day of June, 2026} \end{document}

  • Interaction between drawing something in the background and a page of floats
    by Werner on June 26, 2026 at 3:59 am

    In the following setup, I have a couple of images that forms part of a very large figure. The float ends up on a page of floats (on its own), because of the size. I plan on drawing some elements in the background, simulated by the background fill being the example images via \AddToHookNext{shipout/background}{<background drawing>}: \documentclass{article} \usepackage{lipsum,tikz} \begin{document} \lipsum[1-2] \begin{figure} \centering \tikz [remember picture] \node [inner sep = 10pt] (image-a) {\includegraphics[width = 0.5\linewidth]{example-image-a}}; \bigskip \tikz [remember picture] \node [inner sep = 10pt] (image-b) {\includegraphics[width = 0.5\linewidth]{example-image-b}}; \bigskip \tikz [remember picture] \node [inner sep = 10pt] (image-c) {\includegraphics[width = 0.5\linewidth]{example-image-c}}; \caption{A large figure} \AddToHookNext{shipout/background}{% \begin{tikzpicture}[remember picture, overlay] \filldraw [draw = red, fill = red!10!white, thick] (image-a.south west) rectangle (image-a.north east); \filldraw [draw = blue, fill = blue!10!white, thick] (image-b.south west) rectangle (image-b.north east); \filldraw [draw = green, fill = green!10!white, thick] (image-c.south west) rectangle (image-c.north east); \end{tikzpicture}} \end{figure} \lipsum[3-10] \end{document} Using this approach, however, puts the background drawing on the page where the original figure is processed, rather than where the actual figure is placed. How can I adjust the code so that the background content is placed correctly on the page where the float ends up? Ideally I'd like to keep the code as part of the figure as it semantically belongs with the figure, rather than placing it at some other bizarre place in the document just to make sure it fits there.

  • Remove default minipage padding
    by iacchi on June 26, 2026 at 1:08 am

    Minipages are so common that I can't believe this hasn't been answered before, however I googled for about an hour and I came up with nothing, so here I am. I noticed that the minipage environment has some sort of default inner padding (about 2.5 mm or 1/10 in), which I would like to remove. How can I do it, using options or another elegant way, without using some odd negative \hspace or something similar? To explain what I'm talking about, I made the MWE below comparing a minipage to a tcolorbox. Se how the tcolorbox of the same declared length of the minipage is shorter due to the absence of padding, and see how a tcolorbox of the same visual length of the minipage is actually 5 mm wider in its declaration. Notice also how the pink minipage with the envelope is narrower than the envelope itself, so the envelope doesn't get properly centred by \centering and it stays within the pink area only thanks to the margin. The left margin can be clearly seen also in the yellow minipage. \documentclass[a4paper,11pt]{article} \usepackage{fontawesome7} \usepackage{xcolor} \usepackage{tcolorbox} \setlength{\parindent}{0pt} \begin{document} \colorbox{lightgray}{ \begin{minipage}{8.6cm} \colorbox{pink}{ \begin{minipage}{2mm}\centering \faEnvelope{} \end{minipage} } \colorbox{yellow}{ \begin{minipage}{7.35cm} lperson@email.org \end{minipage} } \end{minipage} } \vskip 2mm \begin{tcolorbox}[boxsep=0pt,top=4pt,left=0pt,right=0pt,bottom=4pt,arc=0pt,colback=lightgray,frame empty,width=9.1cm] actual minipage width \end{tcolorbox} \vskip 2mm \begin{tcolorbox}[boxsep=0pt,top=0pt,left=0pt,right=0pt,bottom=0pt,arc=0pt,colback=lightgray,frame empty,width=8.6cm] \begin{tcolorbox}[boxsep=0pt,top=0pt,left=0pt,right=0pt,bottom=0pt,arc=0pt,colback=pink,frame empty,width=6mm,,after=\hspace{0mm}]\centering \faEnvelope{} \end{tcolorbox} \begin{tcolorbox}[boxsep=0pt,top=0pt,left=0pt,right=0pt,bottom=0pt,arc=0pt,colback=yellow,frame empty,width=7cm,before=\hspace{0mm}] lperson@email.org \end{tcolorbox} \end{tcolorbox} \end{document} This is the visual result of the code above:

  • How can I generate random numbers that are unique using pgftikz?
    by Matt on June 25, 2026 at 7:50 pm

    I am trying to generate worksheets where each time \A is called for in the document, a random number is generated. I use \NewNumbers to make sure each \A within a section is identical. How can I make it so that each \A after the \NewNumbers command is different? \documentclass[addpoints, 12pt, answers]{exam} \usepackage[margin=1in]{geometry} \usepackage{amsmath, amssymb, lmodern, pgfmath, tikz, tcolorbox, multicol} \renewcommand{\familydefault}{\sfdefault} \pointformat{} \renewcommand{\TheSolution}[1]{ \pgfmathparse{#1 <= 1 ? "Neither" : (isprime(#1) ? "Prime" : "Composite")} \pgfmathresult } \pgfmathsetseed{1} \newcommand{\NewNumbers}{ \pgfmathsetmacro{\A}{random(0,100)} } \begin{document} \printanswers \begin{questions} \begin{multicols}{3} \NewNumbers \question[1] $\A$ \fillin[\TheSolution{\A}] \NewNumbers \question[1] $\A$ \fillin[\TheSolution{\A}] \NewNumbers \question[1] $\A$ \fillin[\TheSolution{\A}] \end{multicols} \end{questions} \end{document}

  • Using TikZ-CD's "shift left" outside TikZ-CD (in a "\draw")
    by Eduardo Ochs on June 25, 2026 at 7:11 pm

    The manual for TikZ-CD has a section called "3.3 Drawing diagrams directly with TikZ" that shows how to use the TikZ-CD styles "outside Tikz-CD". For example, "shift left" and "shift right" are styles defined in tikzlibrarycd.code.tex, and by default they only work inside a \begin{tikzcd}...\end{tikzcd} block; the tricks from section 3.3 should make "shift left" and "shift right" work inside a \begin{tikzpicture}...\end{tikzpicture} block, but the last example below shows that that doesn't work, or at least don't work inside a \draw, with the syntaxes that I've tried... What am I missing? Any hints? \documentclass{article} \usepackage{tikz} \usepackage{tikz-cd} \begin{document} Tikz-CD: % \begin{tikzcd}[baseline=(A4.base)] |[alias=A4]| B & |[alias=A5]| A \arrow [from=A4, to=A5, <-, "L", shift left=1] \arrow [from=A4, to=A5, ->, "R"', shift right=1] \end{tikzcd} Tikzpicture, 1: % \begin{tikzpicture}[baseline=(A4.base)] \node [anchor=center] (A4) at (0,0) {$\textstyle B$}; \node [anchor=center] (A5) at (1.25,0) {$\textstyle A$}; \draw [<-] (A4) -- (A5) node[midway,above] {$\scriptstyle L$}; \draw [->] (A4) -- (A5) node[midway,below] {$\scriptstyle R$}; \end{tikzpicture} Tikzpicture, 2: % \begin{tikzpicture}[baseline=(A4.base), commutative diagrams/.cd,every arrow,every label] \node [anchor=center] (A4) at (0,0) {$\textstyle B$}; \node [anchor=center] (A5) at (1.25,0) {$\textstyle A$}; \draw [<-, commutative diagrams/shift left=1] (A4) -- (A5) node[midway,above] {$\scriptstyle L$}; \draw [->, commutative diagrams/shift right=1] (A4) -- (A5) node[midway,below] {$\scriptstyle R$}; \end{tikzpicture} \end{document} Update after egreg's answer... My question was a pgfkeys question in disguise! I am adding a TikZ backend to Dednat6/Dednat7 (big example), and I'm looking for a solution that at some point will have a readable syntax, like this one... \draw [<-,shift left=1] (A4) -- (A5) node[midway,above] {$\scriptstyle L$}; \draw [->,shift right=1] (A4) -- (A5) node[midway,below] {$\scriptstyle R$}; ...and to get there I will probably need several steps, like starting by copying some definitions around and then calling shift left and shift right with explicit pgfkeys paths, discovering the pgfkeys paths used by \draw, and defining a shift left and a shift right in the pgfkeys path for \draw that will call that shift left and the shift right in pgfk@/tikz/commutative diagrams/... By the way, if we run this: \documentclass{article} \usepackage{tikz} \usepackage{tikz-cd} \begin{document} \directlua{ for i,name in pairs(tex.hashtokens()) do local pat = "shift left" if name:match(pat) then print(name, token.get_macro(name)) end end } \end{document} The output in stdout is this (abbreviated): pgfk@/tikz/commutative diagrams/shift left/.@def +0.56ex pgfk@/tikz/commutative diagrams/shift left/.@cmd \pgfkeysalso (...)

  • babel giving font warnings if I want to use a different series as default
    by David Purton on June 25, 2026 at 4:21 pm

    I want to use a lighter series of a font by default with babel, but I get annoying warnings: LaTeX Font Warning: Font shape `TU/lmr/ul/n' undefined (Font) using `TU/lmr/m/n' instead on input line 7. LaTeX Font Warning: Font shape `TU/lmss/ul/n' undefined (Font) using `TU/lmss/m/n' instead on input line 7. LaTeX Font Warning: Font shape `TU/lmtt/ul/n' undefined (Font) using `TU/lmtt/m/n' instead on input line 7. This code without babel is ok: \documentclass{article} \usepackage{fontspec} \newfontfamily{\notosans}{Noto Sans}[ NFSSFamily = notosans , FontFace = {ul}{n}{Font=Noto Sans Thin} ] \renewcommand*{\familydefault}{notosans} \renewcommand*{\seriesdefault}{ul} \begin{document} zzz \end{document} But this code with babel gives warnings: \documentclass{article} \usepackage{babel} \babelprovide[import, main]{english} \babelfont{notosans}[FontFace = {ul}{n}{Font=Noto Sans Thin}]{Noto Sans} \renewcommand*{\familydefault}{\notosansdefault} \renewcommand*{\seriesdefault}{ul} \begin{document} zzz \end{document} Having to define dummy series for every font seems like it should not be necessary. Is there a way around this?

  • Expanding token list
    by sgmoye on June 25, 2026 at 9:40 am

    Clearly I'm missing something basic. I have a token list (expanded, I think) to \foo, that I want to use as an argument to the \SplitList macro, but apparently it is not expanded enough... \documentclass{article} \usepackage[papersize={5.5in,8.5in},margin=0.6in]{geometry} \usepackage{pgffor} \newcounter{expnum} \newtoks\revsett \NewDocumentCommand{\tohsett}{ >{\SplitList{,}}m }{\ProcessList{#1}{\tohsettaux}} \NewDocumentCommand{\tohsettaux}{m}{\stepcounter{expnum}\preit{#1}} \def\preit#1{\edef\bar{\global\revsett={#1,\the\revsett}}\bar}% reverses order \parindent0pt \begin{document} \toks0={1,2,3} \edef\foo{\the\toks0} This does not work, picks up only one argument:\\ \tohsett{\foo}\theexpnum, \the\revsett \revsett={} \setcounter{expnum}{0} This works, finds all three arguments...\\ \tohsett{1,2,3}\theexpnum, \the\revsett \revsett={} ...as does this\\ \foreach \n in \foo {\preit{\n}}\the\revsett \thispagestyle{empty} \end{document} I feel dumb, overlooking something embarrassingly basic...

  • Vertically Center Text in Figure Environment [duplicate]
    by nebulisx on June 25, 2026 at 2:54 am

    I am trying to vertically center text in an figure in relation to the graphic inserted in the environment Here is the figure environment code I am using \begin{document} ... \begin{figure}[h] \includegraphics[scale=0.15]{test.jpg} \begin{minipage}[c][\columnsep][c]{1.0\linewidth} \hspace{2em} {\Large \today} \end{minipage} \end{figure} \newpage \includepdf[pages=-]{pdf.pdf} \newpage \end{document} This is the result: I can't entirely tell, but from playing with the position options the height of the figure environment may be different from the height of the images. Also this is a problem I am less worried about but for some reason if the figure goes off the page, it goes to the page after the inserted pdf from \includepdf rather than to the next page.

  • Coloring a region of a sphere in 3D using TikZ
    by John on June 23, 2026 at 11:15 am

    I have just started using the 3d library in TikZ (and I'm quite new to the tikz package itself). I am modelling a physics problem; I want to draw a sphere that represents my system. The particularity of that sphere is to have regions delimited by parallel circles around the North and South poles; I would like to color these regions in a different shade than the rest of the sphere. I have been looking everywhere and I can't find how to do this (if it is possible); using \path and \fill doesn't seem to work. Sorry if it's a stupid question, thanks for your help! Here is my code (I'm also showing the θ,φ parametrization in my sketch; in commentary, my failed attempts for coloring the North Pole): \documentclass{article} \usepackage{tikz} \usepackage{tikz-3dplot} \usepackage{pgfplots} \begin{document} \begin{tikzpicture}[scale=3,tdplot_main_coords] \def\rvec{1.2} \def\thetavec{55} \def\phivec{35} \def\thetaRC{10} \shadedraw[tdplot_screen_coords,ball color = white] (0,0) circle (\rvec); \coordinate (O) at (0,0,0); \tdplotsetcoord{C}{\rvec}{\thetavec}{\phivec} \tdplotsetcoord{UD}{\rvec}{\thetaRC}{90} \tdplotsetcoord{UG}{\rvec}{\thetaRC}{-90} \draw[thick,->] (0,0,0) -- (1.7,0,0) node[anchor=north east]{$x$}; \draw[thick,->] (0,0,0) -- (0,1.7,0) node[anchor=north west]{$y$}; \draw[thick,->] (0,0,0) -- (0,0,1.7) node[anchor=south]{$z$}; \draw[-stealth,very thick,color=green!60!black] (O) -- (C) node[above right=-2] {P}; \draw[dashed, color=green!60!black] (O) -- (Cxy); \draw[dashed, color=green!60!black] (C) -- (Cxy); \tdplotdrawarc[color=green!40!black]{(O)}{0.4}{0}{\phivec}{anchor=north}{\(\varphi\)} \tdplotsetthetaplanecoords{\phivec} \tdplotdrawarc[color=green!40!black,tdplot_rotated_coords]{(0,0,0)}{0.7}{0}{\thetavec}{anchor=south west}{\(\theta\)} \draw[dashed] (\rvec,0,0) arc (0:360:\rvec); \draw[thick] (\rvec,0,0) arc (0:110:\rvec); \draw[thick] (\rvec,0,0) arc (0:-70:\rvec); %\tdplotdrawarc[fill=green!40!black]{(0,0,.995*\rvec)}{.0998}{0}{360}{anchor=south west}{\(\theta\)}; %\path[fill=red,fill opacity=0.5] (0,0,\rvec) -- plot[variable=\t,domain=0:360] (xyz spherical cs:radius=\rvec,longitude=\t,latitude=90-\thetaRC); \end{tikzpicture} \end{document}