• align hitbox of rotated reference cited in TikZ image
    by ali bab613 on August 8, 2026 at 2:52 pm

    I have a document which calls a .tex file that contains a standalone TikZ image. Within that image, I cite several references in a rotated node. I have the MWE here: main.tex: \documentclass{article} \usepackage{tikz} \usepackage{standalone} \usepackage{hyperref} \begin{document} \input{Chapter1} \bibliographystyle{IEEEtran} \bibliography{references} \end{document} and Chapter 1.tex: \documentclass{standalone} \usepackage{hyperref} \usepackage{tikz} \begin{document} \begin{tikzpicture} \node[color=black,rotate=17] at (3.25,-2.35) {\tiny\cite{Test1,Test2,Test3,Test4,Test5}}; \end{tikzpicture} \end{document} Most answers online deal with hyperref to an image that's entirely rotated, in my case this is one node amongst many, and the picture is not rotated. I did not suppress the hitboxes in hyperref (by using \usepackage[breaklinks]{hyperref}) for demonstration purposes, but the problem (obviously) persists for both cases. Here's a screenshot of the resulting image, and its hitboxes: The issue is not only that the box does not rotate (which isn't a massive problem), it's more that it does not align vertically, especially the further along the node you go. Changing the citation to {\tiny\cite{Test1,Test2,Test3,Test4}\cite{Test5}} also does not adjust the box vertically: This may be a long shot, but is there a way to better align the hitbox with the node?

  • How to create a macro/environment like the figure enviroment? [duplicate]
    by Domi on August 7, 2026 at 9:24 pm

    I want to create an environment that, when I use \begin{name}, will show me the commands I want to fill out, like what happens with the figure environment for example. I've tried using the \newenvironment command but I think I'm doing something incorrectly because when I use the environment I created, it just shows up empty. Edit for clarification: I want to create a macro similar to the figure environment, like, when we use the \begin{figure} the following code shows up: \begin{figure} \centering \includegraphics[width=0.5\linewidth]{} \caption{Caption} \label{fig:placeholder} \end{figure} I want to create a macro that does something similar, showing this code: \begin{tcolorbox}[tabularx=Y|Y|Y, title=Título da Tabela, center title] \textbf{} & \textbf{} & \textbf{} \\ \hline & & \\ \hline & & \\ \hline & & \\ \hline & & \\ \hline \end{tcolorbox} The issue I'm having is that, when I use the \newenvironment command, it creates the environment, but none of the content shows up. Does that make sense? Is that something that can be done?

  • showclefs like command in Musixtex
    by ABV on August 7, 2026 at 6:15 pm

    It is needed to implement a command in Musixtex to do: showclefs like command in Musixtex, the basic code is as follow: \documentclass[% border={2pt -11pt 90pt 8pt},% left bottom right top %border=8pt varwidth]{standalone}% Ejemplo 26 \usepackage{tikz} \usetikzlibrary{positioning} \usepackage{musicography} \usepackage{musixtex} \input musixlyr \usepackage{amsmath} \usepackage{xcolor} \xdefinecolor{red-undar}{RGB}{179,35,79} \xdefinecolor{naranja}{RGB}{246,146,30} \xdefinecolor{conchevino}{RGB}{179,35,79} \xdefinecolor{plomoOscuro}{RGB}{52,52,52} \begin{document} \begin{music} \hsize=1.25\linewidth% \resetlyrics \setlyrics{AcordesB}{\B I \B II \B I \B II \B I \B IV \B IV6 \B II I\raisebox{0.5ex}{\bfseries\musFig[l]{{7} {\noFig}}} \B I \B VII\raisebox{-.1ex}{\bfseries\musFig[l]{{5} {6}}} \B I6 \B VII\raisebox{-.1ex}{\bfseries\musFig[l]{{3} {4}}} \B I6}% \setlyrics{AcordesX}{_ _ _ _ _ _ _ _} \setlyrics{AcordesY}{_ _ _ _ _ _ _ _} \setlyrics{AcordesZ}{_ _ _ _ _ _ _ _} \setlyrics{AcordesA}{\B 8J \B 5J \B 3M \B 3m \B 6M \B 6m \B 5 _} %\setsongraise{1}{1.5cm} %\setsongraise{2}{2.5cm} \lyrraisemulti{1}{2}{a -1.9cm} \font\A=phvb8t at 10pt% added for letter type. \font\B=phvb8t at 13pt% added for letter type. \parindent0mm \sepbarrules \generalsignature{0} %\generalmeter{\meterfrac{2}2} \instrumentnumber{1} \interstaff{10}%espacio entre pentagramas del piano \setclef{1}{61}%Clave de Do en 1ra linea \setstaffs1{2}% \nobarnumbers% \startpiece% \A\assignlyricsmulti{1}{2}{AcordesA}%,AcordesX,AcordesY,AcordesB} %\A\assignlyricsmulti{1}{1}{AcordesB}%,AcordesX,AcordesY,AcordesB} \Notes\hqsk\wh{J}\zcharnote{31}{\hspace{-3.5cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 8J}}}; \end{tikzpicture}}|\hqsk\wh{j}\en\doublebar% \setclef{1}{61}\changeclefs% \Notes\wh{J}\zcharnote{31}{\hspace{-3.75cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 5J}}}; \end{tikzpicture}}|\wh{g}\en\doublebar% \Notes\wh{J}\zcharnote{31}{\hspace{-3.75cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 3M}}}; \end{tikzpicture}}|\wh{l}\en% \alaligne% \Notes\wh{a}\zcharnote{31}{\hspace{-3.75cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 3m}}}; \end{tikzpicture}}|\wh{j}\en\doublebar% %\setclef18\zchangeclefs % apply empty clef (no space) \setclef{1}{63}\changeclefs% \Notes\wh{M}\zcharnote{31}{\hspace{-3.75cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 6M}}}; \end{tikzpicture}}|\wh{d}\en\doublebar% \Notes\wh{L}\zcharnote{31}{\hspace{-3.75cm}\begin{tikzpicture} \node (point) at (0,0)[text width=26mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Permitido 6m}}}; \end{tikzpicture}}|\wh{c}\en\setdoubleBAR% \nolyr% \lyricsoff% \endpiece \end{music} \end{document} the current output is as follow: The desired output is as follow:

  • TikZ to draw an arrow along the side of a table
    by Maronite Monks on August 7, 2026 at 2:06 pm

    I have a table to which I'd like to add a curved arrow (with an arrowhead at one end) running outside the table. The line will originate at the upper left portion of a table and end with the arrow pointing at the lower left portion. Another similar arrow will be outside the lower right side of the table and end pointing at the upper right side. I'd like some text to follow the curve of the arrows on each side of the table. The text for the left arrow will say: "Gives rise to the irascible". The text on the right will say: "Resolves in the concupiscible". Here's a MWE I've compiled with LuaLaTeX. \documentclass[12pt]{memoir} \addtolength\tabcolsep{.5in} \renewcommand\arraystretch{1.5} \begin{document} \begin{center} \begin{tabular}{c|c} \hline\hline {\scshape Good}& {\scshape Evil}\\\hline\hline\\[-9pt] love & hate \\\hline desire & avoid \\\hline joy & sad \\\hline\hline\\[-9pt] hope & bold \\\hline despair & fear \\\hline\hline\\[-9pt] & anger \end{tabular} \end{center} \end{document}

  • Robust way to write equation solving
    by Sunris8 on August 7, 2026 at 1:29 pm

    I want to write a robust code to write equations solving with vertical bar. I started with the last answer of this. My MWE is copied below. The problem is that the code is not robust (see picture: e.g. the length of the bar is fixed if you add more lines, but maybe some other issues that I have not spotted yet). At best, I would like a command \resolutionstep{...}{...} which would reproduce the picture adapting automatically the line of the equation, so something like: \begin{equation/array} \resolutionstep{3x+2{1}{-2} \resolutionstep{3x}{-1}{\div 3} \resolutionstep{x}{-\frac 13}{} \end{equation/array} Does any one know a good package/code to improve this? Thanks! \documentclass{article} \usepackage{showframe} \renewcommand{\ShowFrameLinethickness}{0.3pt} \usepackage{eqparbox} \usepackage{amsmath,array} \begin{document} blablabla \begin{alignat}{2} \qquad2x+2 &= 7x+3 &\hspace{6em}\smash{\rule[-5\baselineskip]{0.5pt}{6\baselineskip}} \qquad-2 & \\ 2x &= 7x+1 & -7 x & \\ -5x &= 1 &\div(-5) & \\ -5x &= 1 &\div(-5) & \\ -5x &= 1 &\div(-5) & \\ -5x &= 1 &\div(-5) & \\ x &= \boxed{-\frac{1}{5}} & & \end{alignat} \end{document}

  • above and below space for table rules tabularray
    by MadyYuvi on August 7, 2026 at 6:49 am

    My code are: \documentclass{article} \usepackage{array} \usepackage{tabularray} \UseTblrLibrary{booktabs} \begin{document} \NewColumnType{W}[1]{>{\raggedright\hangindent=1em\arraybackslash}Q[wd=#1]}% %\SetTblrInner{rowsep=0pt,row{1} = {l,b}} \SetTblrInner{rows={abovesep=0pt,belowsep=0pt},row{1} = {l,b}} \heavyrulewidth=0.5pt \lightrulewidth=0.5pt \cmidrulewidth=0.5pt \belowrulesep=14pt \belowbottomsep=14pt \aboverulesep=14pt \abovetopsep=10pt \cmidrulesep=\doublerulesep \cmidrulekern=.5em %\begin{tblr}{@{}XW{20pc}@{}} Test for tblr \begin{tblr}{colspec = {@{}XW{20pc}@{}}, row{1} = {l,b}} \toprule \SetCell[c=1]{l} Variable & \SetCell[c=1]{l} Sources\break Bottom\break test\\ \midrule \SetCell[c=2]{c} \textit{Supply variables}\\ Entry of new nonprofits & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ Nonprofit employees & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ Nonprofit financials & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ \bottomrule \end{tblr} \end{document} already I gave some large value of above and below space for all rules (e.g., \toprule, etc.) but nothing was affected, how can I fix the space (need to fix 6pt white space for all rules)

  • CMUTypewriter symbols baseline inconsistency?
    by Explorer on August 7, 2026 at 4:46 am

    I have the following code: \documentclass{article} \usepackage{fontspec} \setmonofont{cmun}[ Extension = .otf, UprightFont = *btl, BoldFont = *tb, ItalicFont = *bto, BoldItalicFont = *tx, HyphenChar = None] \begin{document} Hello \texttt{+} world \texttt{-} and everyone! Hello \texttt{\char92 CJKsout+} world \texttt{\char92 CJKsout-} and everyone! \end{document} It gives the unexpected baseline of + and -... Any suggestions? Edited The original case was I want to illustrate two commands: \CJKsout+ \CJKsout- both in xeCJKfntef package. If they are put together, that was in bad looking, if you don't mind to read Chinese, you could see here.

  • Cookbook layouting with minipage?
    by Mr. Undercover on August 6, 2026 at 10:21 pm

    I am trying to create a latex layout for a cookbox, that I want to make. I have trouble however, trying to create 2 textboxes right next to each other as you can see. In my layout I create 2 minipages next to each other and the headlines of them look fine, however the text does not quite match what I want. First of all: the lines of the left box do not break, they break when the text reaches the very end of the page. Secondly, the text of the left box starts way below the title, right under the list of the right box? And thirdly, I defined "Zubereitung" which means preparation as #8 and "Zuaten" (ingredients) as #9, in my file for the recipe I put the instructions in #8 just like in the layout but it appears under the wrong one? I could just change the headlines, however I try to understand why that happens. Please help, it is driving me crazy, thanks!! I thought about trying parbox instead of minipage but I have also read, that you can not use enumerate in parbox? How can I make the 2 boxes "Zubereitung" (preparation) and Zutaten "ingredients" look clean next to each other?? \usepackage[a4paper,margin=2.2cm]{geometry} \usepackage{graphicx} \usepackage{xcolor} \usepackage{fontawesome5} \usepackage{parskip} \usepackage{tcolorbox} \usepackage{titlesec} % Keine Kapitelnummern \titleformat{\chapter}[display] {\Huge\bfseries} {} {0pt} {\Huge} % Kopf- und Fußzeilen ausschalten \pagestyle{plain} \definecolor{recipegreen}{RGB}{39,90,48} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\recipe}[9]{% \typeout{TEST TEST TEST} \clearpage \thispagestyle{empty} %========================================================== % Oberer Teil %========================================================== \noindent \begin{minipage}[t]{0.58\textwidth} \vspace{0pt} \includegraphics[ width=\linewidth, height=0.50\textheight, keepaspectratio ]{#2} \end{minipage} \hfill \begin{minipage}[t]{0.37\textwidth} \vspace{0pt} {\Huge\bfseries\color{recipegreen} #1} \vspace{1cm} {\large\faClock\quad #3} \vspace{0.4cm} {\large\faFire\quad #4} \vspace{0.4cm} {\large\faUserFriends\quad #5} \vspace{0.4cm} {\large\faGlobe\quad #6} \vspace{1cm} \begin{tcolorbox}[ colback=gray!8, colframe=gray!20, boxrule=0.3pt, arc=2mm] #7 \end{tcolorbox} \end{minipage} \vspace{1cm} %========================================================== % Unterer Teil %========================================================== \noindent \begin{minipage}[t]{0.58\textwidth} {\Large\bfseries Zubereitung} \vspace{0.5cm} #8 \end{minipage}\hfill \begin{minipage}[t]{0.37\textwidth} {\Large\bfseries Zutaten} \vspace{0.5cm} #9 \end{minipage} } \recipe {Shakshuka} {rezepte/shakshuka.jpg} {10 Minuten} {20 Minuten} {2 Personen} {Naher Osten} {Ein Frühstück das aus den mittleren Osten stammt. Es basiert auf einer gewürzten Tomaten-Paprika Basis mit gekochten Eiern.} { \begin{enumerate} \item schneiden daus idasdasdadas das das das ads das dassad \item kochen \item essen \end{enumerate} } { \begin{itemize} \item 1 Paprika das adsad s das das das das das das das ads sda das das dasd asd as da dsa dasd das das das dasd asd as dasd \item 3 Tomaten \item 5 Eier \end{itemize} }

  • How to easily draw and parameterize various pH titration curves (including diprotic/dibasic) for a beginner?
    by user446526 on August 6, 2026 at 8:23 am

    I am a complete beginner when it comes to drawing complex functional plots in LaTeX. I am trying to create several types of pH titration curves for a document, but I am struggling to write the code from scratch. I found a very helpful French website that seems to have the exact mathematical logic and LaTeX code for what I need: https://www.astrolabe-science.fr/courbes-titrages-acido-basiques-latex/ However, as a beginner, I find it quite difficult to extract just the essential parts to create a simple, easily editable template. I need to recreate the following types of curves (I have attached images of what I am aiming for): The 4 basic monoprotic titrations: Strong Acid, Strong Base, Weak Acid, and Weak Base. Diprotic acid titration: A curve with two equivalence points (increasing pH). Dibase titration: A curve with two equivalence points (decreasing pH). My request: Could someone help provide a simplified, beginner-friendly pgfplots (or TikZ) template based on the math from that website? Ideally, I am looking for a code structure where the main parameters (like initial concentrations, volumes, and pK_a values) are defined at the top so I can easily change them. It would be incredibly helpful if you could include brief comments/instructions inside the code explaining how to switch between the different types of curves (e.g., "change this sign for a base", "uncomment this for a diprotic acid"). Thank you so much for your time and help! I have attached images of what I am aiming for.

  • Empty Clef is not working on Musixtex
    by ABV on August 5, 2026 at 10:41 pm

    It is needed to use Empty Clef, but it is not working on Musixtex. The basic code is as follow: \documentclass[% border={2pt -11pt 90pt 8pt},% left bottom right top %border=8pt varwidth]{standalone}% Ejemplo 28 \usepackage{tikz} \usetikzlibrary{positioning} \usepackage{musicography} \usepackage{musixtex} \input musixlyr \usepackage{amsmath} \usepackage{xcolor} \xdefinecolor{red-undar}{RGB}{179,35,79} \xdefinecolor{naranja}{RGB}{246,146,30} \xdefinecolor{conchevino}{RGB}{179,35,79} \xdefinecolor{plomoOscuro}{RGB}{52,52,52} \begin{document} \begin{music} \hsize=1.25\linewidth% \resetlyrics \setlyrics{AcordesB}{\B I \B II \B I \B II \B I \B IV \B IV6 \B II I\raisebox{0.5ex}{\bfseries\musFig[l]{{7} {\noFig}}} \B I \B VII\raisebox{-.1ex}{\bfseries\musFig[l]{{5} {6}}} \B I6 \B VII\raisebox{-.1ex}{\bfseries\musFig[l]{{3} {4}}} \B I6}% \setlyrics{AcordesA}{\B 8 \B Np \B 5 \B Np \B 5 \B 5 \B Np \B 8 \B Np \B 6 \B 3 \B 8 \B 6 \B Np \B 5 _} %\setsongraise{1}{1.5cm} %\setsongraise{2}{2.5cm} \lyrraisemulti{1}{2}{a -1.9cm} \font\A=phvb8t at 10pt% added for letter type. \font\B=phvb8t at 13pt% added for letter type. \parindent0mm \sepbarrules \generalsignature{0} %\generalmeter{\meterfrac{2}2} \instrumentnumber{1} \interstaff{10}%espacio entre pentagramas del piano \setclef{1}{61}%Clave de Do en 1ra linea \setstaffs1{2}% \nobarnumbers% \startpiece% \A\assignlyricsmulti{1}{2}{AcordesA}%,AcordesX,AcordesY,AcordesB} \A\assignlyricsmulti{1}{1}{AcordesB}%,AcordesX,AcordesY,AcordesB} \Notes\qsk\wh{J}\zcharnote{33}{\hspace{0.5cm}\begin{tikzpicture} \node (point) at (0,0)[text width=24mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Apertura 8va}}}; \end{tikzpicture}}\zcharnote{0}{\hspace{-0.65cm}\begin{tikzpicture} \node (point) at (0,0)[text width=16mm,align=center] {\textcolor{red-undar}{\A\textbf{}}}; \draw[line width=2pt,draw=red-undar] (0.118,2.27) -- ++(0.1,0)-- ++(0,-2.2)-- ++(-0.1,0); \end{tikzpicture}}% |\qsk\hp\hl{j}\en\bar% \notes\wh{K}|\ql{ih}\hl{i}\en\bar \NOtes\sk|\sk\en\doublebar% \setclef18\zchangeclefs % apply empty clef (no space) \setclef{1}{61}\changeclefs% \notes\wh{J}\zcharnote{33}{\hspace{0.5cm}\begin{tikzpicture} \node (point) at (0,0)[text width=27mm,align=center, fill=naranja!10, inner sep=2pt, draw=naranja, line width=1.5pt] {\textcolor{red-undar}{\B\textbf{Apertura 5ta}}}; \end{tikzpicture}}|\qp\ql{gnm}\en\bar% \notes\wh{L}\zcharnote{-3}{\hspace{-4.2cm}\begin{tikzpicture} \node (point) at (0,0)[text width=16mm,align=center] {\textcolor{red-undar}{\A\textbf{}}}; \draw[line width=2pt,draw=red-undar] (0.118,2.27) -- ++(0.1,0)-- ++(0,-1.9)-- ++(-0.1,0); \end{tikzpicture}}% |\ql{lkj}\qsk\en\setdoubleBAR% \nolyr% \lyricsoff% \endpiece \end{music} \end{document} The current output is as follow: The desired output is as follow:

  • Latest kernel breaks `xeCJKfntef`'s highlight? [closed]
    by Explorer on August 5, 2026 at 5:56 pm

    Here below is my MWE: % `xelatex` needed \listfiles \documentclass{article} \usepackage[fontset=fandol]{ctex} \usepackage{xcolor} \usepackage{xeCJKfntef} \begin{document} \CJKunderanyline*{0.5ex}{\color{yellow}\rule{2pt}{2.5ex}}{虚室生白,吉祥止止} \end{document} I run tlmgr update today, and I guessed that the latest kernel that cause this bug: *File List* article.cls 2025/01/22 v1.4n Standard LaTeX document class size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) ctex.sty 2026/07/14 v2.6.4 Chinese adapter in LaTeX (CTEX) expl3.sty 2026-07-20 L3 programming layer (loader) l3backend-xetex.def 2026-02-18 L3 backend support: XeTeX ctexhook.sty 2026/07/13 v2.6.4 Document and package hooks (CTEX) ctexpatch.sty 2026/07/13 v2.6.4 Patching commands (CTEX) fix-cm.sty 2020/11/24 v1.1t fixes to LaTeX ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file ctexopts.cfg 2026/07/13 v2.6.4 Option configuration file (CTEX) ctex-engine-xetex.def 2026/07/15 v2.6.4 XeLaTeX adapter (CTEX) xeCJK.sty 2026/07/22 v3.10.4 Typesetting CJK scripts with XeLaTeX xtemplate.sty 2025-10-09 L3 Experimental prototype document functions fontspec.sty 2025/09/29 v2.9g Font selection for XeLaTeX and LuaLaTeX xparse.sty 2025-10-09 L3 Experimental document command parser fontspec-xetex.sty 2025/09/29 v2.9g Font selection for XeLaTeX and LuaLaTeX fontenc.sty 2025/07/18 v2.1d Standard LaTeX package fontspec.cfg xeCJK.cfg 2026/07/22 v3.10.4 Configuration file for xeCJK package zhnumber.sty 2022/07/14 v3.0 Typesetting numbers with Chinese glyphs zhnumber-utf8.cfg 2022/07/14 v3.0 Chinese numerals with UTF8 encoding ctex-scheme-chinese.def 2026/07/13 v2.6.4 Chinese scheme for generic (CTEX) ctex-name-utf8.cfg 2026/07/13 v2.6.4 Caption with encoding UTF-8 (CTEX) indentfirst.sty 2023/07/02 v1.03 Indent first paragraph (DPC) ctex-c5size.clo 2026/07/14 v2.6.4 c5size option (CTEX) ctex-fontset-fandol.def 2026/07/22 v2.6.4 Fandol fonts definition (CTEX) ctex.cfg xcolor.sty 2024/09/29 v3.02 LaTeX color extensions (UK) color.cfg 2016/01/02 v1.6 sample color configuration xetex.def 2025/11/01 v5.0p Graphics/color driver for xetex mathcolor.ltx xeCJKfntef.sty 2026/07/22 v3.10.4 xeCJK font effect ulem.sty 2019/11/18 *********** Anyone knows what happened? And any possible solution to fix this?

  • Fast and feature-complete LaTeX formatters
    by Akira on August 5, 2026 at 3:10 pm

    I am looking for a LaTeX formatter that is both fast and feature-complete. By being fast, I mean it can format a very large tex file (e.g., more than 30,000 lines) in under a second. By being feature-complete, I mean it can handle nested alignment environments. For example, given \begin{align}a&= \begin{aligned}&b + c \\ & d + f\end{aligned} \\ g&= h\end{align} I would expect the formatter to produce something like \begin{align} a & = \begin{aligned} & b + c \\ & d + f \end{aligned} \\ g & = h \end{align} My motivation: I use VSCode where I configure latexindent to format a tex file whenever I save the changes. That being said, I format a tex file multiple times during an edit. Due to this frequent usage, I can feel the delay when using latexindent even on an average tex file I am aware of the following tools: latexindent is mature and feature-complete, but it is not fast enough for large files. For example, it takes about 25 seconds to format this paper source (36,192 lines), as discussed in this issue. tex-fmt is very fast (being implemented in Rust), but it does not yet handle the above example. It formats \begin{align}a&= \begin{aligned}&b + c \\ & d + f\end{aligned} \\ g&= h\end{align} as \begin{align}a&= \begin{aligned}&b + c \\ & d + f \end{aligned} \\ g&= h \end{align} Are there LaTeX formatters that satisfy both of these requirements?

  • How to position some text independent of document flow?
    by lindes on August 5, 2026 at 4:41 am

    I'm relatively new to LaTeX, but... I very much suspect it's a decent tool for what I'm trying to do, but I'm having trouble quite getting the behavior I want. My goal is to create a cover, on a5 paper (ultimately, I'll print 2 on a single sheet of A4 paper), to wrap around an a6-sized booklet (the contents of which I've already created, using just pandoc, and thus LaTeX only implicitly). I've found ways to get two-column text that gets me the basics of things (and also a background image, not shown here), but I'd like to also put some text along what amounts to the spine of the booklet, but I'm having troubles getting the positioning of that correct. Here's what I've got so far (including adding showframe just for debugging purposes): \documentclass[a5paper,landscape]{article} \usepackage{rotating} % sideways, turn \usepackage{multicol} % columns \setlength{\columnsep}{1cm} \usepackage[left=0.5cm,right=0.5cm,top=2cm,bottom=2cm,showframe]{geometry} \pagenumbering{gobble} \begin{document} \begin{multicols}{2} \begin{center} Text here for the back cover... \end{center} \columnbreak \begin{center} {\huge A title here} \vspace{2cm} {\large And a subtitle} \end{center} \end{multicols} \makebox[\textwidth][c]{ \begin{turn}{270} Spine text ends up after subtitle... \end{turn} } \end{document} Which generates this: My hope was that the "S" of the "Spine text..." part would start at the same line as the top of the "A" in "A title here", but instead it seems to come at the roughly the same vertical position (acually a little lower, even) on the page as I'd get if I added another line of text... and if I indeed do that, it goes even lower. So, clearly its getting its positioning information from the other stuff on the page. I presume this is because it's in "Paragraph mode". Because I'm still new to LaTeX, though, I'm not sure what I would need to do to get this either into a different mode, or reset the positioning, or treat this as a third (middle) column, of a much narrower width, or... something I haven't even thought of, yet, perhaps. Any solutions (perhaps a different \documentclass, or adding some other packages, or what have you) would be appreciated. (Especially if they can also get me a simpler page layout -- without the space for headings and such that I see thanks to showframe.) Perhaps something to create a minipage with absolute positioning on the page? Or to just position that one line of text? Anyway, something to a least treat the spine text as somehow separate, positioning-wise, from the rest. I've dug around on this site and various others, and tried a few things, but not yet found something that I've been able to figure out how to apply to the challenge at hand. Hopefully that can soon change. 🙂 Thanks!

  • How to get the exact width of a tabbing row?
    by mbert on August 4, 2026 at 9:14 pm

    In source2e, the box \@curline is described as the contents of current line, excluding left margin skip, and excluding contents of current field Thus I would expect that the width of \@curline in the last field would be everything up to but not including the last field. This is almost correct, but it seems this width is slightly larger than expected. Here's an example. \documentclass{article} \newlength{\firstrowlen} \newlength{\secondrowlen} \begin{document} \makeatletter \begin{tabbing} some text \= some more text \= even more text \= blub \`\global\firstrowlen=\wd\@curline \\ abc \> def \> ghi \> jkl \`\global\secondrowlen=\wd\@curline \end{tabbing} \noindent \raisebox{36pt}[0pt]{\rule{\firstrowlen}{1pt}} \noindent \raisebox{36pt}[0pt]{\rule{\secondrowlen}{1pt}} \end{document} As can be seen, the length of the rules, which are the width of \@curline from each row, extend slightly farther than the actual content. It seems they extend the same amount for both rows. What is this extra amount and where is it coming from? I could not seem to figure this out from the code in source2e.

  • table column heading bottom alignment - tabularray
    by MadyYuvi on August 4, 2026 at 2:33 pm

    I need to align the column heads are in base alignment format, my tags are: \documentclass{article} \usepackage{array} \usepackage{tabularray} \UseTblrLibrary{booktabs} \begin{document} \NewColumnType{W}[1]{>{\raggedright\hangindent=1em\arraybackslash}p{#1}}% \begin{tblr}{@{}XW{20pc}@{}} \toprule \SetCell[c=1]{l} Variable & \SetCell[c=1]{l} Sources\break Bottom\\ \midrule \SetCell[c=2]{c} \textit{Supply variables}\\ Entry of new nonprofits & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ Nonprofit employees & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ Nonprofit financials & The influence of industry structure on the countries innovation capacity has been examined under three types of agglomeration externalities\\ \bottomrule \end{tblr} \end{document}

  • Multiple cross-references with only hyperref
    by Akira on August 4, 2026 at 11:27 am

    I have a tex file \documentclass{article} \usepackage{amsthm} \usepackage{mathtools} % before hyperref \mathtoolsset{showonlyrefs} \usepackage[hypertexnames=false]{hyperref} \hypersetup{ colorlinks=true, linkcolor=blue, filecolor=blue, urlcolor=red, citecolor=magenta } \begin{document} \begin{align} B & = C , \label{thm:eq1} \\ X & = Y . \label{thm:eq4} \end{align} We have \eqref{thm:eq1,thm:eq4} and \autoref{thm:eq1,thm:eq4}. \end{document} Both cleveref and zref-clever seem not to be maintained anymore. So I would like to stick to hyperref. Can \eqref{thm:eq1,thm:eq4} and \autoref{thm:eq1,thm:eq4} produce Equations (0.1) and (0.2)? I am aware of the solution in Multiple references with \autoref, which is 15 years old. I wonder if recent development is able to provide a simpler solution.

  • Only prevent line breaks if text fits within one line
    by Rincewind on August 4, 2026 at 10:30 am

    I am trying to define a command which I do not want to line break if possible. I know this can be done by wrapping the entire command into an \mbox command. However, I may use this command with very long arguments which cannot fit into a single line. But as far as I am aware \mbox will prevent line breaks even if the argument is longer than one line. Is there a way to prevent line breaks only if the argument can fit within one line or do I have to define two separate commands, one that allows line breaking and one that does not? Edit: Here is a smallish example \documentclass[a4paper]{article} \newcommand{\ProdType}[2]{#1 \times #2} \newcommand{\Pair}[2]{{(#1,\mkern2mu#2)}} \newcommand{\Sum}[2]{{#1 \mathop{+} #2}} \newcommand{\AnnotateType}[2]{#1_{#2}} \newcommand{\SumType}[2]{#1 + #2} \newcommand{\listT}[1][\tau]{list~#1} \newcommand{\type}{\AnnotateType{(\SumType{\AnnotateType{unit}{\emptyset}}{\AnnotateType{(\ProdType{\tau}{\AnnotateType{\listT}{D}})}{\emptyset}})}{\emptyset}} \begin{document} This text defines a reasonably long type namely the type $\type$ that is broken up against my will. On the other hand if I mbox it, it is not broken up, even if it needs to be: \mbox{$\Pair{\SumType{\Pair{\type}{\type}}{\Pair{\type}{\type}}}{\SumType{\Pair{\type}{\type}}{\Pair{\type}{\type}}}$}. \end{document}

  • tabularray: Text does not wrap in a spanned \SetCell across X columns
    by Rounak Niloy on August 4, 2026 at 5:04 am

    I am using tabularray (v2024A on Overleaf) and have encountered an issue with a longtblr table. I have a table with one X column followed by eight X columns. For one row, I span the last eight columns using \SetCell[c=8]{l,m}{...}. However, the text inside the merged cell does not wrap. Instead, it continues beyond the page width as a single line. I expected the merged cell to have the combined width of the eight X columns and automatically wrap the text. The following MWE reproduces the problem: \usepackage{tabularray} \UseTblrLibrary{booktabs} \usepackage{pifont} \newcommand{\cmark}{\ding{51}} \newcommand{\xmark}{\ding{55}} \begin{document} \begin{longtblr}[ caption = {Dummy table}, label = {tab:test}, ]{ width = \linewidth, colsep = 2pt, rowsep = 2pt, colspec = {X[0.225,l,m] *{8}{X[0.2,c,m]}}, hline{1-Z} = {solid}, columns = {font=\footnotesize}, rowhead = 1, row{1} = {font=\footnotesize\bfseries}, } \SetCell{c} Reference & \SetCell{c} Col 1 & \SetCell{c} Col 2 & \SetCell{c} Col 3 & \SetCell{c} Col 4 & \SetCell{c} Col 5 & \SetCell{c} Col 6 & \SetCell{c} Col 7 & \SetCell{c} Col 8 \\ Foo & \cmark & \xmark & \cmark & \xmark & \cmark & \xmark & \cmark & \xmark \\ Bar & \xmark & \cmark & \xmark & \cmark & \xmark & \cmark & \xmark & \cmark \\ Baz & \xmark & \xmark & \xmark & \xmark & \xmark & \xmark & \xmark & \xmark \\ Qux & \SetCell[c=8]{l,m} {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.} \\ \midrule Present work & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ \end{longtblr} \end{document} Output: The text extends beyond the page instead of wrapping within the merged cell. Expected behaviour: The merged cell should behave like a paragraph cell spanning the combined width of the eight X columns, with the text wrapped automatically. Is this expected behaviour of tabularray, or am I using \SetCell incorrectly? If this is the intended behaviour, what is the recommended way to create a multi-column paragraph cell that wraps automatically?

  • Placing text at the end of the last line of center environment
    by mbert on August 3, 2026 at 11:04 pm

    I'm working on some code to improve amsthm's \qedhere in various list-type environments, e.g., center. I'm having trouble getting the placement right in the last line of the center environment. The default of amsthm is to insert an \hfill which causes the text on the last line to be placed flush left. Here's an example showing the effect of \hfill and amsthm's default behavior. \documentclass{article} \usepackage[nopar]{kantlipsum} \usepackage{amsthm} \begin{document} \begin{center} \kant[1][1-2] \hfill\qedsymbol % not good \end{center} \begin{center} \kant[1][1-2]% this doesn't work \makebox[0pt]{\mbox{}\hfill\qedsymbol} \end{center} \begin{proof} \begin{center} \kant[1][1-2] \qedhere % not good \end{center} \end{proof} \end{document} Is there a way to place the \qedsymbol at the end of the line without affecting the text in that line? My first idea was to use a zero-width box but I couldn't figure out the right combination of (possibly nested) \makeboxes. Ideally, if the last line did not have room for the \qedsymbol, it would be moved to the end of the following line. I'm hoping to do this without writing to the aux with \pdfsavepos (as in the linegoal package).

  • Fairy chess pieces with xskak
    by baristocrona on August 3, 2026 at 10:23 pm

    A few weeks ago I stumbled upon a strange bug: when I tried to place numbers on squares, I got some fairy chess pieces instead. The problem turned out to be related to the use of the beamerposter package (the issue disappears when beamerposter is not loaded). \documentclass{beamer} \usepackage[LSBC5, T1]{fontenc} \usepackage[orientation=portrait, size=custom,width=38,height=40.5,scale=1.0]{beamerposter} \usepackage{xskak} \usepackage{xcolor} \begin{document} \chessboard[ clearboard, % --- NUMBERS --- pgfstyle={[base, at={\pgfpoint{0pt}{-0.4ex}}]text}, % Degree 2 text=\fontsize{1ex}{1ex} 158, markfield=a1, text=\fontsize{1ex}{1ex} 138, markfield=a8, text=\fontsize{1ex}{1ex} 168, markfield=h1, text=\fontsize{1ex}{1ex} 168, markfield=h8, % Degree 3 text=\fontsize{1ex}{1ex} 112, markfield=a2, text=\fontsize{1ex}{1ex} 112, markfield=a7, text=\fontsize{1ex}{1ex} 112, markfield=b1, text=\fontsize{1ex}{1ex} 112, markfield=b8, text=\fontsize{1ex}{1ex} 112, markfield=g1, text=\fontsize{1ex}{1ex} 112, markfield=g8, text=\fontsize{1ex}{1ex} 112, markfield=h2, text=\fontsize{1ex}{1ex} 112, markfield=h7, % Degree 4 text=\fontsize{1ex}{1ex} 84, markfield=a3, text=\fontsize{1ex}{1ex} 84, markfield=a4, text=\fontsize{1ex}{1ex} 84, markfield=a5, text=\fontsize{1ex}{1ex} 84, markfield=a6, text=\fontsize{1ex}{1ex} 84, markfield=b2, text=\fontsize{1ex}{1ex} 84, markfield=b7, text=\fontsize{1ex}{1ex} 84, markfield=c1, text=\fontsize{1ex}{1ex} 84, markfield=c8, text=\fontsize{1ex}{1ex} 84, markfield=d1, text=\fontsize{1ex}{1ex} 84, markfield=d8, text=\fontsize{1ex}{1ex} 84, markfield=e1, text=\fontsize{1ex}{1ex} 84, markfield=e8, text=\fontsize{1ex}{1ex} 84, markfield=f1, text=\fontsize{1ex}{1ex} 84, markfield=f8, text=\fontsize{1ex}{1ex} 84, markfield=g2, text=\fontsize{1ex}{1ex} 84, markfield=g7, text=\fontsize{1ex}{1ex} 84, markfield=h3, text=\fontsize{1ex}{1ex} 84, markfield=h4, text=\fontsize{1ex}{1ex} 84, markfield=h5, text=\fontsize{1ex}{1ex} 84, markfield=h6, % Degree 6 text=\fontsize{1ex}{1ex} 56, markfield=b3, text=\fontsize{1ex}{1ex} 56, markfield=b4, text=\fontsize{1ex}{1ex} 56, markfield=b5, text=\fontsize{1ex}{1ex} 56, markfield=b6, text=\fontsize{1ex}{1ex} 56, markfield=c2, text=\fontsize{1ex}{1ex} 56, markfield=c7, text=\fontsize{1ex}{1ex} 56, markfield=d2, text=\fontsize{1ex}{1ex} 56, markfield=d7, text=\fontsize{1ex}{1ex} 56, markfield=e2, text=\fontsize{1ex}{1ex} 56, markfield=e7, text=\fontsize{1ex}{1ex} 56, markfield=f2, text=\fontsize{1ex}{1ex} 56, markfield=f7, text=\fontsize{1ex}{1ex} 56, markfield=g3, text=\fontsize{1ex}{1ex} 56, markfield=g4, text=\fontsize{1ex}{1ex} 56, markfield=g5, text=\fontsize{1ex}{1ex} 56, markfield=g6, % Degree 8 text=\fontsize{1ex}{1ex} 42, markfield=c3, text=\fontsize{1ex}{1ex} 42, markfield=c4, text=\fontsize{1ex}{1ex} 42, markfield=c5, text=\fontsize{1ex}{1ex} 42, markfield=c6, text=\fontsize{1ex}{1ex} 42, markfield=d3, text=\fontsize{1ex}{1ex} 42, markfield=d4, text=\fontsize{1ex}{1ex} 42, markfield=d5, text=\fontsize{1ex}{1ex} 42, markfield=d6, text=\fontsize{1ex}{1ex} 42, markfield=e3, text=\fontsize{1ex}{1ex} 42, markfield=e4, text=\fontsize{1ex}{1ex} 131, markfield=e5, text=\fontsize{1ex}{1ex} 10, markfield=e6, text=\fontsize{1ex}{1ex} 42, markfield=f3, text=\fontsize{1ex}{1ex} 42, markfield=f4, text=\fontsize{1ex}{1ex} 22, markfield=f5, text=\fontsize{1ex}{1ex} 42, markfield=f6, boardfontsize=20pt] \end{document} Now, I'm actually working with fairy chess pieces, and the only way I see to get them is to build them myself. Could someone help me get those amazing pieces back? As a minimal working example I'm placing a board with just a knight. Could somebody make him vary its shape (i.e., turn it into a fairy chess piece)? \documentclass{article} \usepackage[LSBC5,T1]{fontenc} \usepackage{xskak} \begin{document} \chessboard[setpieces={Nd4}] \end{document} For the time being, I define new pieces using the following code: \makeatletter \cbDefineNewPiece{white}{E} {\raisebox{\depth}{\cfss@whitepiececolor $\includegraphics[width=0.5em]{new-chess-piece.png}$}} {\BlackEmptySquare% \makebox[0pt][r]{\cfss@whitepiececolor \raisebox{\depth}{% \makebox[1em]{$\includegraphics[width=1em]{new-chess-piece.png}$}}}}

  • Mixing different text and math fonts [closed]
    by scriptor on August 3, 2026 at 8:37 pm

    To be honest, I can't stand Computer Modern in text anymore, I think Libertinus Serif is much better, however I still wanna use CM (specifically NewCM) for maths. Is it okay to mix text and math fonts or should I stick with Libertinus across the board?

  • Octavo class. Is it possible to obtain a oneside document?
    by Yves on August 3, 2026 at 7:00 pm

    I am trying to evaluate the best possible option for a friend to compose a book of her poems. I have found that the poetrytex package has the necessary features. However I sense my friend could be attracted by the appearance created by the octavo class. She intends to have her book printed, but also wishes to obtain a pdf file to share easily with remote friends. I was unable to get the oneside option working in the octavo class, which may be by design. A file containing poems with a change of margins on each page is not visually attractive, while a book obviously is. \documentclass[12pt,oneside,titlepage,imperial]{octavo} \usepackage{lipsum} \begin{document} \title{Test octavo class} \maketitle \lipsum[1-10] \newpage \lipsum[5-9] \end{document}

  • \SI{}{} Units Are Converted into Multiple MathML Elements Instead of a Single MathML Element
    by rcv on August 3, 2026 at 3:36 pm

    Issue: Each \SI{}{} unit is converted into two separate MathML elements instead of a single MathML element. Requirement: How can each \SI{}{} expression be converted into a single MathML element? Example: For example, \SI{14.7}{\percent} is currently converted into two separate MathML elements—one for 14.7 and another for %. It should instead be converted into a single MathML element representing the complete SI value and unit. MWE: \documentclass{book} \usepackage{siunitx} \usepackage{algorithm2e} \usepackage{algpseudocode} \begin{document} Manufacturing decarbonization requires emission control that remains auditable under regulatory uncertainty. We propose Carbon-Conformal Manufacturing (CCM), which uses one-sided conformal upper bounds and Carbon Compliance Certificates to connect hourly control decisions with EU ETS and CBAM reporting logic in paper-mill energy systems. On 12 months of source-plant data, CCM reduces carbon emissions by \SI{14.7}{\percent} while maintaining \SI{99.1}{\percent} of production and achieving \SI{96.2}{\percent} empirical coverage at a \SI{95}{\percent} target. In two validated digital-twin variants, coverage remains between \SI{95.4}{\percent} and \SI{96.6}{\percent}, with carbon reduction between \SI{14.2}{\percent} and \SI{14.7}{\percent}. Point optimization reaches \SI{11.3}{\percent} reduction, Bayesian uncertainty intervals reach \SI{93.8}{\percent} coverage, and removing conformal calibration reduces coverage to \SI{87.0}{\percent} while increasing violation events by \SI{23}{\percent}. CCM improves carbon reduction per compute-hour by \SI{11.5}{\percent} over RL-noCP and yields annualized savings of 2,831 tCO$_2$e and 244 kEUR at 86 EUR/t. Temporal and stress tests show stable monthly coverage, and an 8-week shadow deployment sustains weekly monitoring performance under operator review. Live closed-loop actuation remains future work, and the paper's claim boundary is limited to source-plant, digital-twin, and shadow-deployment evidence. \end{document} Produced Output: <!--l. 8--><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" ><mn>1</mn><mn>4</mn><mo class="MathClass-punc" stretchy="false">.</mo><mn>7</mn></math> <!--l. 8--><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" ><mstyle mathvariant="normal"><mi >%</mi></mstyle></math>

  • Using a font package without overwriting the default \mathcal command
    by Matthew on August 3, 2026 at 3:18 pm

    I want to use the fourier package for the Utopia font, but I'm not a fan of how mathcal font changes to something reminiscent of mathscr. How do I use fourier while retaining the usual mathcal alphabet?

  • Code Review: A custom TikZ package for drawing Chemistry Reaction Progress Tables (ICE tables)
    by Natsu on August 3, 2026 at 2:33 pm

    As part of my workflow for typesetting educational materials, I frequently need to draw Chemistry Reaction Progress Tables (often known as ICE tables). To automate this, I am developing a small custom package using tikz called tkzPhysTab. The package calculates the grid coordinates automatically based on the number of reactants and products, places the $+$ and $\rightarrow$ signs, and allows adding rows dynamically. Here is the package code (tkzPhysTab.sty): \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tkzPhysTab}[2025/11/07 Physical Reaction Table by Khaldi] \RequirePackage{tikz} % ============================= % Default Values % ============================= \def\tkzPhysTabFirstColWidth{1.5} % Width of the first column \def\tkzPhysTabColWidth{2.5} % Width of the data columns \def\tkzPhysTabRowHeight{1.0} % Row height % ============================= % Setup pgfkeys % ============================= \pgfkeys{ /tkzPhysTab/.is family, /tkzPhysTab, firstcol/.store in = \tkzPhysTabFirstColWidth, colwidth/.store in = \tkzPhysTabColWidth, rowheight/.store in = \tkzPhysTabRowHeight, reset/.code = { \def\tkzPhysTabFirstColWidth{1.5} \def\tkzPhysTabColWidth{2.5} \def\tkzPhysTabRowHeight{1.0} } } % Counters (Note: I am aware calling \newcounter here might cause issues if called twice, looking for better alternatives) \newcounter{tkzcolsOne} \newcounter{tkzcolsTwo} \newcounter{tkzlevel} \newcounter{tkzrows} % ============================= % Table Initialization Command % ============================= \newcommand{\tkzPhysicsTabInit}[4][]{% % Reset default values \pgfkeys{/tkzPhysTab/reset} % Apply custom options from [options] \pgfkeys{/tkzPhysTab,#1} \setcounter{tkzcolsOne}{0} \setcounter{tkzcolsTwo}{0} \setcounter{tkzlevel}{1} \setcounter{tkzrows}{0} \foreach \c in {#3}{\stepcounter{tkzcolsOne}} \foreach \c in {#4}{\stepcounter{tkzcolsTwo}} \foreach \r in {#2}{\stepcounter{tkzrows}} \pgfmathtruncatemacro{\ncolData}{\thetkzcolsOne + \thetkzcolsTwo} \pgfmathtruncatemacro{\nrows}{\thetkzrows + 1} \pgfmathsetmacro{\W}{\tkzPhysTabFirstColWidth + \ncolData * \tkzPhysTabColWidth} \pgfmathsetmacro{\H}{\nrows * \tkzPhysTabRowHeight} \coordinate (T) at (0,0); \draw[very thick] (T) rectangle (\W,-\H); % Vertical lines \draw (\tkzPhysTabFirstColWidth, 0) -- (\tkzPhysTabFirstColWidth, -\H); \foreach \i in {1,...,\ncolData}{ \pgfmathsetmacro{\xpos}{\tkzPhysTabFirstColWidth + \i * \tkzPhysTabColWidth} \draw (\xpos, -\tkzPhysTabRowHeight) -- (\xpos, -\H); } % Horizontal lines \foreach \j in {1,...,\nrows}{ \draw (0, -\j*\tkzPhysTabRowHeight) -- (\W, -\j*\tkzPhysTabRowHeight); } % Reactants \foreach [count=\i from 1] \c in {#3} { \pgfmathsetmacro{\xcenter}{\tkzPhysTabFirstColWidth + (\i - 0.5) * \tkzPhysTabColWidth} \node at (\xcenter, -\tkzPhysTabRowHeight/2) {\c}; \ifnum\i>1 \pgfmathsetmacro{\xplus}{\tkzPhysTabFirstColWidth + (\i - 1) * \tkzPhysTabColWidth} \node at (\xplus, -\tkzPhysTabRowHeight/2) {$+$}; \fi } % Arrow between reactants and products \pgfmathtruncatemacro{\nReact}{\thetkzcolsOne} \pgfmathsetmacro{\xarrow}{\tkzPhysTabFirstColWidth + \nReact * \tkzPhysTabColWidth} \node at (\xarrow, -\tkzPhysTabRowHeight/2) {$\rightarrow$}; % Products \foreach [count=\i from 1] \c in {#4} { \pgfmathsetmacro{\xcenter}{\xarrow + (\i - 0.5) * \tkzPhysTabColWidth} \node at (\xcenter, -\tkzPhysTabRowHeight/2) {\c}; \ifnum\i>1 \pgfmathsetmacro{\xplus}{\xarrow + (\i - 1) * \tkzPhysTabColWidth} \node at (\xplus, -\tkzPhysTabRowHeight/2) {$+$}; \fi } % Row labels \foreach [count=\j from 1] \r in {#2} { \pgfmathsetmacro{\ycenter}{-(\j + 0.5) * \tkzPhysTabRowHeight} \node at (\tkzPhysTabFirstColWidth/2, \ycenter) {\r}; } } % ============================= % Add Row Command % ============================= \newcommand{\tkzPhysicsTabLine}[1]{% \stepcounter{tkzlevel} \foreach [count=\i from 1] \val in {#1} { \pgfmathsetmacro{\xcenter}{\tkzPhysTabFirstColWidth + (\i - 0.5) * \tkzPhysTabColWidth} \pgfmathsetmacro{\ycenter}{-(\thetkzlevel - 0.5) * \tkzPhysTabRowHeight} \node at (\xcenter, \ycenter) {\val}; } } And here is the Minimum Working Example (MWE) generating the table: \documentclass[border=5mm]{standalone} \usepackage{tkzPhysTab} \begin{document} \begin{tikzpicture} \tkzPhysicsTabInit[firstcol=2.0,colwidth=3,rowheight=1.2]% {$x=0$,$x=t$,$x=f$}% {$Fe_3O_4$,$4H_2$}% {$3Fe$,$4H_2O$} \tkzPhysicsTabLine{$2.18$,$9.65$,$0$,$0$} \tkzPhysicsTabLine{$2.18-x$,$-4x$,$?$,$?$} \tkzPhysicsTabLine{$2.18-x_{\max}$,$-4x_{\max}$,$??$,$??$} \end{tikzpicture} \end{document} My questions for the experts: I initially defined \newcounter inside \tkzPhysicsTabInit, which caused an error when calling the table twice. I fixed this by declaring the counters globally in the package file and using \setcounter inside the macro to reset them. Is this the standard LaTeX best practice, or is there a more elegant way to handle local counters/variables in this context without polluting the global namespace? Is manually calculating coordinates using \pgfmathsetmacro the most efficient way to draw this grid, or would you recommend using TikZ libraries like matrix or integrating with packages like tabularray? Are there any other optimizations or best practices you would suggest to make this package more robust for general users? Thank you in advance for your insights!

  • Why new line is added when glue is zero?
    by Igor Liferenko on August 3, 2026 at 8:12 am

    The following two examples demonstrate that when \hskip becomes zero, an empty line is added: \hfuzz=10000pt \hsize=0pt \noindent\hskip0pt thirteen\hskip0pt---\hskip1sp dimensional \bye \hfuzz=10000pt \hsize=0pt \noindent\hskip0pt thirteen\hskip0pt---\hskip0sp dimensional \bye

  • Footnote order problem in old version of elsarticle
    by C.F.G on August 2, 2026 at 6:59 pm

    I encountered the following footnote ordering and numbering problem in old version of elsarticle.cls class. Footnotes in the main text should be placed after the footnotes for title and authors. I know that this problem does not occur in the new version of elsarticle i.e. cas-sc.cls. How can I fix this problem? (numbering and order of footnotes) MWE \documentclass[3p, times]{elsarticle} \usepackage{lipsum} \begin{document} \begin{frontmatter} \title{Angels of Minab} % Authors names \author[add1]{Makan Nasiri\fnref{label1}} \ead{email address} \author[add1]{Amir-Ali Jadavi\corref{cor1}\fnref{label2}} \ead{email address} %\ead[url]{home page} \fntext[label1]{Victim of the US attack; remains never recovered} \fntext[label2]{Victim of the US attack; remains never recovered} \cortext[cor1]{corresponding author} \address[add1]{Shajareh Tayyebeh Elementary School, Minab, Hormozgan province, Iran} \begin{abstract} %% Text of abstract This paper presents a study on the...\footnote{a footnote}\footnote{a footnote}\footnote{a footnote}\footnote{a footnote} \end{abstract} \begin{keyword} Makan Nasiri \sep Amir-Ali Jadavi \end{keyword} \end{frontmatter} \section{part 1} \lipsum[1-2] \section{part 2} \label{} \lipsum[1-2] \end{document}

  • How to put the content of a table in a separate file [duplicate]
    by Roland Chastain on August 2, 2026 at 5:59 pm

    The following file (demo5.tex) is generated by a program. 2026 & & & & & 18 fév. & 5 avr. & & & & & \\ 2027 & & & & & 10 fév. & 28 mars & & & & & \\ 2028 & & & & & 1er mars & 16 avr. & & & & & \\ 2029 & & & & & 14 fév. & 1er avr. & & & & & \\ 2030 & & & & & 6 mars & 21 avr. & & & & & \\ 2031 & & & & & 26 fév. & 13 avr. & & & & & \\ 2032 & & & & & 11 fév. & 28 mars & & & & & \\ 2033 & & & & & 2 mars & 17 avr. & & & & & \\ 2034 & & & & & 22 fév. & 9 avr. & & & & & \\ 2035 & & & & & 7 fév. & 25 mars & & & & & \\ 2036 & & & & & 27 fév. & 13 avr. & & & & & \\ 2037 & & & & & 18 fév. & 5 avr. & & & & & \\ 2038 & & & & & 10 mars & 25 avr. & & & & & \\ 2039 & & & & & 23 fév. & 10 avr. & & & & & \\ 2040 & & & & & 15 fév. & 1er avr. & & & & & \\ 2041 & & & & & 6 mars & 21 avr. & & & & & \\ 2042 & & & & & 19 fév. & 6 avr. & & & & & \\ 2043 & & & & & 11 fév. & 29 mars & & & & & \\ 2044 & & & & & 2 mars & 17 avr. & & & & & \\ 2045 & & & & & 22 fév. & 9 avr. & & & & & \\ I try to include it in my main document as follows (document.tex) : \documentclass[a4paper,landscape,12pt]{article} \usepackage{tabularray} \usepackage{showframe} \usepackage{geometry} \geometry{margin=1in} \usepackage{fontspec} \setmainfont{EBGaramond} \begin{document} \begin{tblr}{*{12}{c}} {Année du\\Seigneur} & {Litt.\\Dom.} & {Nb.\\d'or} & Epactae & {Septua-\\gésime} & Cendres & Pâques & Ascension & Pentecôte & {Fête-\\Dieu} & {Nb. dim.\\ap. Pent.} & {1er dim.\\Avent} \\ \input{demo5.tex} \end{tblr} \end{document} I get this error: $ lualatex document This is LuaHBTeX, Version 1.24.0 (TeX Live 2026/Mageia) restricted system commands enabled. (./document.tex LaTeX2e <2025-11-01> L3 programming layer <2026-01-19> (/usr/share/texmf-dist/tex/latex/base/article.cls Document Class: article 2025/01/22 v1.4n Standard LaTeX document class ... *geometry* driver: auto-detecting *geometry* detected driver: luatex (./demo5.tex ! Misplaced alignment tab character &. l.1 2026 & & & & & 18 fév. & 5 avr. & & & & & \\ ? I don't understand the error. If I paste manually the content of demo5.tex in my main document (document2.tex), I can compile the document. \documentclass[a4paper,landscape,12pt]{article} \usepackage{tabularray} \usepackage{showframe} \usepackage{geometry} \geometry{margin=1in} \usepackage{fontspec} \setmainfont{EBGaramond} \begin{document} \begin{tblr}{*{12}{c}} {Année du\\Seigneur} & {Litt.\\Dom.} & {Nb.\\d'or} & Epactae & {Septua-\\gésime} & Cendres & Pâques & Ascension & Pentecôte & {Fête-\\Dieu} & {Nb. dim.\\ap. Pent.} & {1er dim.\\Avent} \\ 2026 & & & & & 18 fév. & 5 avr. & & & & & \\ 2027 & & & & & 10 fév. & 28 mars & & & & & \\ 2028 & & & & & 1er mars & 16 avr. & & & & & \\ 2029 & & & & & 14 fév. & 1er avr. & & & & & \\ 2030 & & & & & 6 mars & 21 avr. & & & & & \\ 2031 & & & & & 26 fév. & 13 avr. & & & & & \\ 2032 & & & & & 11 fév. & 28 mars & & & & & \\ 2033 & & & & & 2 mars & 17 avr. & & & & & \\ 2034 & & & & & 22 fév. & 9 avr. & & & & & \\ 2035 & & & & & 7 fév. & 25 mars & & & & & \\ 2036 & & & & & 27 fév. & 13 avr. & & & & & \\ 2037 & & & & & 18 fév. & 5 avr. & & & & & \\ 2038 & & & & & 10 mars & 25 avr. & & & & & \\ 2039 & & & & & 23 fév. & 10 avr. & & & & & \\ 2040 & & & & & 15 fév. & 1er avr. & & & & & \\ 2041 & & & & & 6 mars & 21 avr. & & & & & \\ 2042 & & & & & 19 fév. & 6 avr. & & & & & \\ 2043 & & & & & 11 fév. & 29 mars & & & & & \\ 2044 & & & & & 2 mars & 17 avr. & & & & & \\ 2045 & & & & & 22 fév. & 9 avr. & & & & & \\ \end{tblr} \end{document} Why?

  • How to draw a complex shaded ribbon with a central jewel using TikZ? [closed]
    by Natsu on August 2, 2026 at 7:48 am

    I am looking for guidance on how to recreate the attached image (image.png) entirely within LaTeX using TikZ. The image consists of two main complex elements: A red ribbon with intricate curves and realistic 3D-like gradient shading. A multi-faceted jewel/diamond in the center with sharp light reflections. Initially, I thought simulating this 3D effect in TikZ would be too complex, but following the community's helpful feedback and advice on providing a Minimal Working Example (MWE), I decided to tackle both the ribbon and the central jewel to demonstrate my progress. I managed to draw the ribbons using manual Bézier curves and custom shadings to simulate the folds. For the jewel, I used a clipping mask and layered semi-transparent polygons (opacity) to mimic the glass facets and light reflections. Here is my current MWE: \documentclass[tikz,border=5mm]{standalone} \usetikzlibrary{shadings,calc} \definecolor{ribbonred}{RGB}{215,10,28} \begin{document} \begin{tikzpicture}[x=3cm,y=3cm] \begin{scope} \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=150] (-0.463,-0.006) .. controls (-0.497,-0.017) and (-0.649,-0.048) .. (-0.672,-0.073) .. controls (-0.680,-0.110) and (-0.637,-0.134) .. (-0.601,-0.158) .. controls (-0.563,-0.147) and (-0.467,-0.035) .. (-0.445,-0.010) .. controls (-0.423,0.015) and (-0.464,-0.008) .. (-0.468,-0.008); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=150] (-0.188,-0.128) .. controls (-0.204,-0.135) and (-0.236,-0.149) .. (-0.281,-0.167) .. controls (-0.320,-0.207) and (-0.380,-0.306) .. (-0.372,-0.502) .. controls (-0.372,-0.717) and (-0.372,-0.842) .. (-0.562,-0.776) .. controls (-0.684,-0.438) and (-0.369,-0.102) .. (-0.231,-0.080) .. controls (-0.199,-0.102) and (-0.195,-0.127) .. (-0.188,-0.136); \fill[% top color=ribbonred!50!black, bottom color=ribbonred!50!black, middle color=ribbonred!80, shading angle=140] (-0.182,-0.067) .. controls (-0.437,-0.096) and (-0.598,-0.685) .. (-0.497,-0.794) .. controls (-0.664,-0.762) and (-0.983,-0.545) .. (-0.870,-0.355) .. controls (-0.742,-0.221) and (-0.518,-0.079) .. (-0.410,0.012) .. controls (-0.295,0.059) and (-0.217,-0.054) .. (-0.180,-0.069) .. controls (-0.142,-0.084) and (-0.196,-0.091) .. (-0.199,-0.095); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=30] (-0.178,0.212) .. controls (-0.206,0.278) and (-0.189,0.365) .. (-0.246,0.416) .. controls (-0.280,0.438) and (-0.328,0.400) .. (-0.328,0.369) .. controls (-0.315,0.330) and (-0.208,0.214) .. (-0.182,0.186) .. controls (-0.157,0.159) and (-0.178,0.209) .. (-0.177,0.213); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=30] (-0.160,0.197) .. controls (-0.221,0.247) and (-0.283,0.409) .. (-0.387,0.469) .. controls (-0.469,0.505) and (-0.508,0.420) .. (-0.521,0.365) .. controls (-0.488,0.312) and (-0.254,0.183) .. (-0.192,0.154) .. controls (-0.129,0.125) and (-0.166,0.190) .. (-0.161,0.198); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=90] (-0.141,0.178) .. controls (-0.350,0.409) and (-0.606,0.510) .. (-0.676,0.366) .. controls (-0.690,0.282) and (-0.678,0.169) .. (-0.660,0.115) .. controls (-0.634,0.025) and (-0.692,-0.075) .. (-0.665,-0.108) .. controls (-0.604,0.016) and (-0.319,-0.044) .. (-0.258,-0.059) .. controls (-0.171,-0.008) and (-0.165,0.163) .. (-0.147,0.207); \end{scope} \begin{scope}[shift={(-0.04, 0.03)}, xscale=-1, shift={(0.04, -0.03)}] \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=30] (-0.463,-0.006) .. controls (-0.497,-0.017) and (-0.649,-0.048) .. (-0.672,-0.073) .. controls (-0.680,-0.110) and (-0.637,-0.134) .. (-0.601,-0.158) .. controls (-0.563,-0.147) and (-0.467,-0.035) .. (-0.445,-0.010) .. controls (-0.423,0.015) and (-0.464,-0.008) .. (-0.468,-0.008); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=30] (-0.188,-0.128) .. controls (-0.204,-0.135) and (-0.236,-0.149) .. (-0.281,-0.167) .. controls (-0.320,-0.207) and (-0.380,-0.306) .. (-0.372,-0.502) .. controls (-0.372,-0.717) and (-0.372,-0.842) .. (-0.562,-0.776) .. controls (-0.684,-0.438) and (-0.369,-0.102) .. (-0.231,-0.080) .. controls (-0.199,-0.102) and (-0.195,-0.127) .. (-0.188,-0.136); \fill[% top color=ribbonred!50!black, bottom color=ribbonred!50!black, middle color=ribbonred!80, shading angle=30] (-0.182,-0.067) .. controls (-0.437,-0.096) and (-0.598,-0.685) .. (-0.497,-0.794) .. controls (-0.664,-0.762) and (-0.983,-0.545) .. (-0.870,-0.355) .. controls (-0.742,-0.221) and (-0.518,-0.079) .. (-0.410,0.012) .. controls (-0.295,0.059) and (-0.217,-0.054) .. (-0.180,-0.069) .. controls (-0.142,-0.084) and (-0.196,-0.091) .. (-0.199,-0.095); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=160] (-0.178,0.212) .. controls (-0.206,0.278) and (-0.189,0.365) .. (-0.246,0.416) .. controls (-0.280,0.438) and (-0.328,0.400) .. (-0.328,0.369) .. controls (-0.315,0.330) and (-0.208,0.214) .. (-0.182,0.186) .. controls (-0.157,0.159) and (-0.178,0.209) .. (-0.177,0.213); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=160] (-0.160,0.197) .. controls (-0.221,0.247) and (-0.283,0.409) .. (-0.387,0.469) .. controls (-0.469,0.505) and (-0.508,0.420) .. (-0.521,0.365) .. controls (-0.488,0.312) and (-0.254,0.183) .. (-0.192,0.154) .. controls (-0.129,0.125) and (-0.166,0.190) .. (-0.161,0.198); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=90] (-0.141,0.178) .. controls (-0.350,0.409) and (-0.606,0.510) .. (-0.676,0.366) .. controls (-0.690,0.282) and (-0.678,0.169) .. (-0.660,0.115) .. controls (-0.634,0.025) and (-0.692,-0.075) .. (-0.665,-0.108) .. controls (-0.604,0.016) and (-0.319,-0.044) .. (-0.258,-0.059) .. controls (-0.171,-0.008) and (-0.165,0.163) .. (-0.147,0.207); \end{scope} \begin{scope} \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred, shading angle=0] (-0.189,-0.118) .. controls (-0.262,-0.210) and (-0.334,-0.412) .. (-0.198,-0.646) .. controls (-0.186,-0.647) and (0.020,-0.234) .. (-0.118,-0.126) .. controls (-0.131,-0.134) and (-0.179,-0.123) .. (-0.191,-0.123); \fill[% top color=ribbonred!20!black, bottom color=ribbonred, shading angle=60] (-0.131,-0.812) .. controls (-0.045,-0.966) and (0.098,-1.214) .. (0.060,-1.606) .. controls (0.142,-1.512) and (0.204,-1.281) .. (0.179,-1.065) .. controls (0.245,-1.127) and (0.337,-1.249) .. (0.337,-1.479) .. controls (0.516,-1.078) and (0.167,-0.702) .. (0.064,-0.552) .. controls (-0.015,-0.442) and (-0.101,-0.777) .. (-0.136,-0.819); \fill[% top color=ribbonred!20!black, bottom color=ribbonred!20!black, middle color=ribbonred!90, shading angle=0] (-0.167,-0.091) .. controls (0.030,-0.372) and (-0.401,-0.822) .. (-0.420,-1.051) .. controls (-0.489,-1.248) and (-0.417,-1.580) .. (-0.277,-1.714) .. controls (-0.351,-1.499) and (-0.303,-1.285) .. (-0.258,-1.233) .. controls (-0.250,-1.456) and (-0.057,-1.685) .. (0.073,-1.730) .. controls (-0.079,-1.540) and (-0.159,-1.035) .. (0.050,-0.742) .. controls (0.218,-0.479) and (0.235,-0.219) .. (0.058,-0.085) .. controls (0.019,0.022) and (-0.140,-0.101) .. (-0.179,-0.104); \end{scope} \begin{scope}[shift={(-0.04, 0.03)}] \shadedraw[draw=ribbonred, very thick, inner color=white, outer color=black!85] (0,0) circle (0.25); \begin{scope} \clip (0,0) circle (0.24); \def\rTable{0.12} \def\rEdge{0.25} \fill[black, opacity=0.35] (67.5:\rTable) -- (112.5:\rTable) -- (90:\rEdge) -- cycle; \fill[black, opacity=0.5] (202.5:\rTable) -- (247.5:\rTable) -- (225:\rEdge) -- cycle; \fill[black, opacity=0.2] (247.5:\rTable) -- (292.5:\rTable) -- (270:\rEdge) -- cycle; \fill[white, opacity=0.6] (22.5:\rTable) -- (67.5:\rTable) -- (45:\rEdge) -- cycle; \fill[white, opacity=0.4] (292.5:\rTable) -- (337.5:\rTable) -- (315:\rEdge) -- cycle; \fill[white, opacity=0.7] (112.5:\rTable) -- (135:\rEdge) -- (180:\rEdge) -- cycle; \fill[white, opacity=0.8] (0,0) -- (45:0.1) -- (0:0.15) -- cycle; \fill[white, opacity=0.5] (0,0) -- (135:0.1) -- (180:0.15) -- cycle; \draw[white, thin, opacity=0.7] (22.5:\rTable) \foreach \a in {67.5, 112.5, 157.5, 202.5, 247.5, 292.5, 337.5} { -- (\a:\rTable) } -- cycle; \foreach \a in {22.5, 67.5, 112.5, 157.5, 202.5, 247.5, 292.5, 337.5} { \draw[white, thin, opacity=0.6] (\a:\rTable) -- (\a+22.5:\rEdge); \draw[white, thin, opacity=0.5] (\a:\rTable) -- (\a-22.5:\rEdge); } \draw[white, thin, opacity=0.8] (0:\rEdge) -- (180:\rEdge); \draw[white, thin, opacity=0.4] (90:\rEdge) -- (270:\rEdge); \end{scope} \tikzset{sparkle/.pic={ \fill[white, opacity=0.9] (0,0.03) .. controls (0.005,0.005) .. (0.03,0) .. controls (0.005,-0.005) .. (0,-0.03) .. controls (-0.005,-0.005) .. (-0.03,0) .. controls (-0.005,0.005) .. cycle; }} \pic at (0.08, 0.12) {sparkle}; \pic[scale=0.7] at (-0.12, 0.05) {sparkle}; \pic[scale=0.5] at (-0.05, -0.15) {sparkle}; \pic[scale=0.8] at (0.15, -0.08) {sparkle}; \end{scope} \end{tikzpicture} \end{document} And here is the resulting output I am very happy with the jewel, but I am looking for advice on how to improve the overall code structure (e.g., making the ribbon code more modular). Additionally, I really struggled with color coordination and picking the right shades for the gradients. If anyone could help me adjust the color palette to make the ribbon look more naturally glossy and realistic, I would be very grateful. I also want to thank kabenyuk for their excellent answer which showed how to modularize the ribbon drawing! Any further improvements or tips on combining these elements effectively would be greatly appreciated.

  • TexStudio "quit unexpectedly" [closed]
    by Sunris8 on August 2, 2026 at 7:33 am

    When I work on TexStudio and I put my Mac to sleep, 8 times out of 10, when I reopen my laptop, I get the following message (see image). I have seen some similar post but either the problem is slightly different (only happens to me when I close the laptop, and files are not corrupt) or the suggested solutions do not work (I don't see the file mentionned in one similar discussion). What could I do?