Hot
- How to use the \convolution operator command provided by fontsetup with OpTeX? (using PUA glyphs in OpTeX)by Apoorv Potnis on February 6, 2026 at 11:38 am
The fontsetup package provides with a \convolution operator command to access a big star symbol from the New Computer Modern fonts. However, fontsetup works only with XeLaTeX and LuaLaTeX. How does one access this glyph from the NewCM fonts with OpTeX? The \convolution command is defined in fspdefault.tex as \DeclareMathOperator*{\convolution}{\mathchoice{\char"E037}{\char"E036}{\char"E038}{\char"E039}}. The question essentially asks about using glyphs not encoded their Unicode slots (Private Use Areas?), as a Unicode slot for the glyph does not exist. LuaLaTeX MWE: \documentclass{article} \usepackage[newcmbb]{fontsetup} \begin{document} \[ \convolution_{1\le i\le n} a_i \] \[ \sum_{i=1}^n \convolution_{i=1}^n x_i \qquad \textstyle \sum\convolution_{i=1}^n x_i \qquad \scriptstyle \sum\convolution_{i=1}^n x_i \qquad \scriptscriptstyle \sum\convolution_{i=1}^n x_i \] \end{document}
- Beamer sty file not workingby Dario on February 6, 2026 at 11:19 am
I have the following sty file: % ============================================================ % PanelDataExact β Beamer Theme % ============================================================ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{beamerthemePanelDataExact}[2026/02/06 stable theme] % ------------------------------------------------------------ % SAFE packages % ------------------------------------------------------------ \RequirePackage{etoolbox} \RequirePackage{xcolor} \RequirePackage{graphicx} \RequirePackage{xparse} % ------------------------------------------------------------ % FONTS % ------------------------------------------------------------ \RequirePackage[T1]{fontenc} \RequirePackage{fix-cm} \renewcommand{\familydefault}{\sfdefault} \renewcommand{\sfdefault}{lmss} \usefonttheme{professionalfonts} % ------------------------------------------------------------ % BASE BEAMER STRUCTURE % ------------------------------------------------------------ \mode<presentation>{ \usetheme{default} \usecolortheme{default} \setbeamertemplate{navigation symbols}{} } % ------------------------------------------------------------ % COLORS % ------------------------------------------------------------ \definecolor{panelblue}{RGB}{30,104,163} \definecolor{slidetitle}{RGB}{30,104,163} \definecolor{rulegray}{RGB}{180,180,180} % ------------------------------------------------------------ % TEXT SIZE OVERRIDES % ------------------------------------------------------------ \AtBeginDocument{ \renewcommand\normalsize{\fontsize{11.5pt}{13.8pt}\selectfont} \renewcommand\small{\fontsize{10.5pt}{12.6pt}\selectfont} } \setbeamerfont{itemize/enumerate body}{size=\normalsize} \setbeamerfont{itemize/enumerate subbody}{size=\normalsize} \setbeamerfont{itemize/enumerate subsubbody}{size=\normalsize} % ------------------------------------------------------------ % TIKZ + PLOTTING % ------------------------------------------------------------ \RequirePackage{tikz} \usetikzlibrary{arrows.meta,positioning,shapes.geometric,calc} \RequirePackage{pgfplots} \pgfplotsset{compat=1.18} \useinnertheme{circles} % ------------------------------------------------------------ % LEFT MARGIN % ------------------------------------------------------------ \newlength{\leftA} \makeatletter \setlength{\leftA}{\beamer@leftmargin} \makeatother \newcommand*\rulefill{% \leaders\hrule height 0.35pt depth 0pt\hfill\kern0pt} % ------------------------------------------------------------ % CUSTOM BULLETS % ------------------------------------------------------------ \newcommand{\panelsquare}{% \tikz[x=1ex, y=1ex]{ \draw[panelblue, line width=0.18ex] (0,0) rectangle (1.1,1.1); \filldraw[panelblue] (0.55,0.55) circle (0.13); }% } \AtBeginDocument{ \setbeamertemplate{itemize item}{\panelsquare} \setbeamertemplate{itemize subitem}{\panelsquare} \setbeamertemplate{itemize subsubitem}{\panelsquare} \setbeamertemplate{enumerate item}{\panelsquare} \setbeamertemplate{enumerate subitem}{\panelsquare} \setbeamertemplate{enumerate subsubitem}{\panelsquare} } % ------------------------------------------------------------ % INTUITION / DISCUSSION BOXES % ------------------------------------------------------------ \setbeamercolor{intuitionbox}{bg=blue!8, fg=black} \setbeamercolor{discussionbox}{bg=red!8, fg=black} \newenvironment{intuition}{ \begin{beamercolorbox}[rounded=true,shadow=true,sep=1em]{intuitionbox} \textbf{Intuition}% }{ \end{beamercolorbox}% } \newenvironment{discussion}{ \begin{beamercolorbox}[rounded=true,shadow=true,sep=1em]{discussionbox} \textbf{Discussion}% }{ \end{beamercolorbox}% } % ------------------------------------------------------------ % SECTION-LEVEL FRAME COUNTER % ------------------------------------------------------------ \newcounter{secframe} \gdef\currsection{} \AtBeginSection{ \setcounter{secframe}{0} \gdef\currsection{\secname} } \makeatletter \addtobeamertemplate{frametitle}{}{ \ifbeamer@plainframe\else \ifcsname isoverview\endcsname\else \stepcounter{secframe} \fi \fi } \makeatother % ------------------------------------------------------------ % HEADER % ------------------------------------------------------------ \makeatletter \setbeamertemplate{headline}{ \ifbeamer@plainframe\relax\else \vspace*{4.2mm} \hbox to \paperwidth{ \hskip\leftA \currsection\quad{\color{rulegray}\rulefill}\quad \ifcsname isoverview\endcsname\relax\else \thesection-\arabic{secframe}% \fi \hskip\leftA } \vspace*{6.2mm} \fi } \makeatother % ------------------------------------------------------------ % SLIDE TITLE % ------------------------------------------------------------ \setbeamertemplate{frametitle}{} \newcommand{\SlideTitle}[1]{% \vspace*{-2mm}% {\bfseries\color{slidetitle}\fontsize{15pt}{18pt}\selectfont #1}% \vspace*{5.6mm}% } % ------------------------------------------------------------ % BRAND + LOGO % ------------------------------------------------------------ \newcommand{\panelbrand}{} \newcommand{\setpanelbrand}[1]{\renewcommand{\panelbrand}{#1}} \newcommand{\panellogo}{example-image-a} \newcommand{\setpanellogo}[1]{\renewcommand{\panellogo}{#1}} \makeatletter \def\firstline#1\\#2\relax{#1} \AtBeginDocument{ \ifx\panelbrand\empty \ifx\beamer@shortinstitute\@empty \ifx\beamer@shorttitle\@empty \setpanelbrand{\beamer@shortauthor} \else \setpanelbrand{\beamer@shorttitle} \fi \else \edef\tmp{\expandafter\firstline\beamer@institute\relax} \setpanelbrand{\tmp} \fi \fi } \makeatother % ------------------------------------------------------------ % FOOTER % ------------------------------------------------------------ \makeatletter \setbeamertemplate{footline}{ \ifbeamer@plainframe\relax\else \vspace*{3mm} \hbox to \paperwidth{ \hskip\leftA \panelbrand\quad{\color{rulegray}\rulefill}\quad \IfFileExists{\panellogo.pdf}{ \raisebox{-0.2ex}{\includegraphics[height=10ex]{\panellogo.pdf}} }{ \IfFileExists{\panellogo.png}{ \raisebox{-4.5ex}{\includegraphics[height=10ex]{\panellogo.png}} }{ \raisebox{-4.5ex}{\color{black!45}\rule{2cm}{1ex}} } } \hskip\leftA } \vspace*{2mm} \fi } \makeatother % ------------------------------------------------------------ % TitleWithLogo (MiKTeX-safe) % ------------------------------------------------------------ \RequirePackage{expl3} \AtBeginDocument{ \ExplSyntaxOn \tl_new:N \tll@height \tl_new:N \tll@yshift \tl_set:Nn \tll@height {11.5mm} \tl_set:Nn \tll@yshift {-0.3ex} \keys_define:nnn { tll } { height } { \tl_set:Nn \tll@height {#1} } \keys_define:nnn { tll } { yshift } { \tl_set:Nn \tll@yshift {#1} } \RenewDocumentCommand{\TitleWithLogo}{O{} m m}{ \keys_set:nn {tll}{#1} \noindent \begin{minipage}[t]{0.78\linewidth} {\bfseries\color{slidetitle}\fontsize{15pt}{18pt}\selectfont #2} \end{minipage}% \hfill \begin{minipage}[t]{0.16\linewidth} \raggedleft \raisebox{\tll@yshift}{ \IfFileExists{#3.pdf}{ \includegraphics[height=\tll@height]{#3.pdf} }{ \IfFileExists{#3.png}{ \includegraphics[height=\tll@height]{#3.png} }{ \color{black!45}\rule{2cm}{1ex} }} } \end{minipage} \par\vspace*{5.6mm}% } \ExplSyntaxOff } % Title page \setbeamertemplate{title page}{ \vbox{} \vspace*{1ex} \TitleWithLogo[height=18mm]{\inserttitle}{\panellogo} \vspace*{0.6ex} {\color{slidetitle}\large\insertsubtitle\par} \vspace*{2ex} {\insertauthor\par} \vspace*{0.5ex} {\insertinstitute\par} } % ------------------------------------------------------------ % OVERVIEW FRAME % ------------------------------------------------------------ \newcounter{totalsections} \pretocmd{\beamer@section}{ \stepcounter{totalsections} \expandafter\xdef\csname sectiontitle\thetotalsections\endcsname{#1} }{}{} \newcommand{\sectick}{\ensuremath{\checkmark}} \newcommand{\SectionOverviewFrame}{ \begin{frame}[t] \gdef\isoverview{1} \makeatletter \expandafter\gdef\expandafter\currsection\expandafter{% \csname sectiontitle\thesection\endcsname} \makeatother \setcounter{secframe}{0} \SlideTitle{Overview} {\small \setbeamertemplate{itemize item}{} \setbeamertemplate{enumerate item}{} \foreach \x in {1,...,\thetotalsections} { \ifnum\x<\value{section} {\csname sectiontitle\x\endcsname}\hfill\sectick\\[2mm] \fi \ifnum\x=\value{section} {\color{slidetitle}\csname sectiontitle\x\endcsname}\\[2mm] \fi \ifnum\x>\value{section} {\csname sectiontitle\x\endcsname}\\[2mm] \fi } } \global\let\isoverview\undefined \end{frame} } \AtBeginSection{\SectionOverviewFrame} % ------------------------------------------------------------ % LISTINGS % ------------------------------------------------------------ \RequirePackage{listings} \definecolor{codebg}{RGB}{244,244,244} \lstdefinestyle{panelstata}{ basicstyle=\ttfamily\small, backgroundcolor=\color{codebg}, frame=single, rulecolor=\color{black!20}, breaklines=true, keepspaces=true, columns=fullflexible, showstringspaces=false, upquote=true } \lstset{style=panelstata} \typeout{*** PanelDataExact theme fully loaded (clean + safe) ***} which I want to use to compile the following presentation: \documentclass[professionalfonts,aspectratio=169]{beamer} \usetheme{PanelDataExact_clean} \title{Do Political Systems Affect Economic Outcomes?} \subtitle{Political Competition, FDI, Growth, and Inequality} \author{Name} \institute{Department of Economics\\ University of XXX} % Optional custom brand: % \setpanelbrand{Politics & Institutions} \begin{document} \begin{frame}[plain] \titlepage \end{frame} \section{Introduction} \begin{frame} \SlideTitle{What this lecture is about} \begin{itemize} \item ... \end{itemize} \end{frame} \section{Second Introduction} \begin{frame} \SlideTitle{What this lecture is about} \begin{itemize} \item ... \end{itemize} \end{frame} \end{document} But I keep receiving the following error message: ! LaTeX Error: Missing \begin{document}. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.287 } {}{} Any hint about? I have no clue about.
- Finding and displaying the intersection points of two surfacesby SH.Madadpour on February 6, 2026 at 10:23 am
How can I display the intersection of the following two surfaces in LaTeX? I have used the following codes as a default but I am not getting acceptable output. Is it possible to create a form to find its intersection points in LaTeX? Thanks a lot. \documentclass[border=3.14mm]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.16} \begin{document} \begin{tikzpicture} \begin{axis}[domain=0.01:30,xlabel=$x$] \addplot3[surf,domain={0:1},color=green]{x^3+y^3}; \addplot3[surf,domain={0:1},color=red]{(x*(1-y^2)^(.5)+y*(1-x^2)^(.5))^3}; \end{axis} \end{tikzpicture} \end{document}
- Chktex: disable warnings on beamer overlay specificationsby BartBog on February 6, 2026 at 8:49 am
Lately I have been using chktex quite a lot for ensuring consistency of my LaTeX files. One question I have is: is it possible to configure it to behave better with beamer overlay specifications. For instance: when I write \visible<.(1)>{text} currently, I get a warning 36. You should put a space in front of parenthesis But clearly, this is not intended inside an overlay specification <>. Is it possible to disable warnings specifically inside such specifications (without disabling this warning in the entire file or on a line-based basis)?
- tikz / xint: Read out (and calc with) fractions from list (or array) with xint or pgfmathby cis on February 6, 2026 at 8:45 am
How can I read out numbers from a list, say \def\pList{0.1, 1/6, 0.25, 0.4} (or array, say \def\pListArray{{\pList}}), with xint? Background: I want to keep fractions, like 1/6 in it's original form (not decimal value 0.1666 here). On the other hand, I need to calc 1-<value> too, and I want, in the case of 1/6 the value 5/6 (=1 - 1/6). I have a main document with a lot of xint content and calculations; therefore, for consistency reasons, it should be done with xint (it's clear that there are other packages or methods for this); and: There must be a method in the xint-package that I can't find in the manual. Does anybody know? \documentclass[margin=5pt, varwidth]{standalone} \usepackage{tikz} \usepackage{xintexpr} \begin{document} \def\pList{0.1, 1/6, 0.25, 0.4}% List \def\pListArray{{\pList}} \section{The pList} \pList \section{pgfmath-test for fraction-readout (bad)} p=\pgfmathprint{\pListArray[0]}, q=\pgfmathprint{1-\pListArray[0]} good. But p=\pgfmathprint{\pListArray[1]}, q=\pgfmathprint{1-\pListArray[1]} bad. \section{xint-test for fractions (good), but how to readout?} p=\xinteval{1/6}, q=\xinteval{1-1/6} \end{document}
- LaTeX on Windows 11 on Snapdragon chipby Mostafa Sabri on February 6, 2026 at 7:38 am
I'm considering buying a laptop with the Snapdragon X/X+ chip (such as Dell Inspiron 5441 or HP Omnibook 5). I believe the OS will be Windows 11 ARM. I heard of compatibility issues with certain apps and games, so I am asking to double check : Will I be able to install MikTex and work with Texniccenter as usual ? I know I can work on overleaf, but it's important for me to be able to work offline. Thanks very much !
- Space after \bmod in normal and script modeby Jinwen on February 6, 2026 at 6:27 am
\bmod seems to behave differently in text style and script style (here is just an example, in reality I am writing it on the arrow of a commutative diagram). Am I using this command in a wrong way? (I learned \bmod from here.) \documentclass{article} \begin{document} \( \bmod{\mathcal{N}} \) \( x^{\bmod{\mathcal{N}}} \) \end{document}
- Lua code for modifying kerning between math characters does not always workby Jinwen on February 6, 2026 at 4:38 am
Adopting the code from this answer and the linked answers, I would like to be able to adjusting the kerning between math characters (notably the spacing around parentheses/brackets). However, the code seems not to be always effective. For instance, in the following example, the configuration between (/[ and π is working, but the kerning between characters (like π and π, π and π) does not work; if one uncomment the line \setmathfont[RawFeature=+mathcharkern]{Asana-Math.otf}... (i.e., using symbols from one font, and using characters from another font), then the specified kerning between π and π appears to work; but the kerning between (/[ and π now fail to work, and the kerning between characters π and π still don't work. Is there perhaps something wrong in my configuration? Why cannot this code work as expected in general, and how to make it work in all situations? \documentclass{article} \usepackage{showkerning} \RequirePackage{luacode} \begin{luacode*} fonts.handlers.otf.addfeature { name = "mathcharkern", type = "kern", data = { ["("] = { ["π"] = 300, }, ["["] = { ["π"] = 300, }, ["π"] = { ["π"] = 500, }, ["π"] = { -- c ["π"] = 500, }, }, } \end{luacode*} \usepackage{unicode-math} \setmathfont[RawFeature=+mathcharkern]{KpMath-Regular.otf} % \setmathfont[RawFeature=+mathcharkern]{Asana-Math.otf}[range={it/{Latin,latin},bfit/{Latin,latin},up/num,bfup/num}] \begin{document} % \addfontfeature{+mathcharkern} \( (ff) \) \( [ff] \) \( cf \) \end{document} Modified code based on Clea F. Rees' and Max Chernoff's suggestion (not sure if I have understood correctly, the following code is still not working, honestly there seems to be no difference): \documentclass{article} \usepackage{showkerning} \RequirePackage{luacode} \begin{luacode*} fonts.handlers.otf.addfeature { name = "mathcharkern", type = "kern", data = { [utf8.codepoint "("] = { [utf8.codepoint "π"] = 300, }, [utf8.codepoint "["] = { [utf8.codepoint "π"] = 300, }, [utf8.codepoint "π"] = { [utf8.codepoint "π"] = 500, }, [utf8.codepoint "π"] = { -- c [utf8.codepoint "π"] = 500, }, }, } --[[ luaotfload doesn't publicly expose the `luaotfload.node_processor` function, and `luatexbase` doesn't expose the functions currently registered to a callback. However, `remove_from_callback` returns the function currently registered, so we can "pop" and save the function with `remove_from_callback`, and then re-register it with `add_to_callback`. ]] local node_processor = luatexbase.remove_from_callback( "pre_linebreak_filter", "luaotfload.node_processor" ) luatexbase.add_to_callback( "pre_linebreak_filter", node_processor, "luaotfload.node_processor" ) --[[ Also run the `luaotfload.node_processor` callback on display math. ]] if true then --[[ Set to `false` to disable. ]] luatexbase.add_to_callback("post_mlist_to_hlist_filter", function(...) local n = select(1, ...) if n.list then n.list = node_processor(n.list, select(2, ...)) return n else return node_processor(n, select(2, ...)) end end, "luaotfload.node_processor") end \end{luacode*} \usepackage{unicode-math} \setmathfont[RawFeature=+mathcharkern]{KpMath-Regular.otf} \setmathfont[RawFeature=+mathcharkern]{Asana-Math.otf}[range={it/{Latin,latin},bfit/{Latin,latin},up/num,bfup/num}] \begin{document} % \addfontfeature{+mathcharkern} \( (ff) \) \( [ff] \) \( cf \) \( fff \) \[ (ff) \] \[ [ff] \] \[ cf \] \[ fff \] \end{document}
- Producing arXiv-like html output from LaTeXMLby Opisthokont on February 5, 2026 at 11:51 pm
The arXiv is now producing very nicely formatted html output from uploaded papers using LaTeXML. I would like to produce similarly nice html for making accessible class notes and problem sets. However, running LaTeXML locally produces fairly ugly looking output: How do I produce html output that looks similar to arXiv's output? I could not find a github or documentation on exactly what the arXiv does to get LaTeXML to look nice.
- using macros in coordinates is causing node names to be read as functions in tikzby Jasper on February 5, 2026 at 11:19 pm
I'm trying to answer Animating light entry and radiation in a blackbody cavity, but am getting an error that I don't recognize. It's treating hit\hit as a function instead of a node name. It works if I just write it with numbers instead of with \hit. Yes, I know some of my conventions are wrong (e.g., by using one letter macro names). I would fix that after fixing my error which prompted this question. ! Package PGF Math Error: Unknown function `hit6' (in 'hit6'). % Source - https://tex.stackexchange.com/q/759283 % Posted by Sebastiano % Retrieved 2026-02-05, License - CC BY-SA 4.0 % Author: Izaak Neutelings (March 2019) % Inspiration: https://tex.stackexchange.com/questions/203597/automatically-generate-graphics-which-shows-light-diffusion-on-a-rough-surface \documentclass[border=3pt,tikz]{standalone} \usetikzlibrary{decorations.pathmorphing,decorations.markings,calc} % for random steps & snake \usetikzlibrary{arrows.meta} % for arrow size \tikzset{>=latex} % for LaTeX arrow head \tikzstyle{radiation}=[-{Latex[length=2,width=1.5]},red!95!black!50,opacity=0.7,very thin,decorate, decoration={snake,amplitude=0.7,segment length=2,post length=2}] \begin{document} \foreach \c[count = \i from 0] in {6,1,15,5,9,14,2,10,3,4,11,13,1,quack} { \pgfmathsetmacro{\flag}{\i == 0} \pgfmathsetmacro{\flagtwo}{\i == 13} \ifnum\flag=1 \xdef\mylist{\c} \else \ifnum\flagtwo=0 \xdef\mylist{\mylist,\c} \else % nothing \fi \fi \begin{tikzpicture}[scale=1.5,rotate=10] \useasboundingbox (-2,-2) rectangle (2,2); \shade[top color=black!60,bottom color=black!80,shading angle=10] (7:1) arc (7:355:1); \fill[thick,black,postaction=decorate, % rough inner surface decoration={markings,mark=between positions 0.55 and 1 step 0.03 with { \node[transform shape,inner sep=1pt] (hit\pgfkeysvalueof{/pgf/decoration/mark info/sequence number}) {}; }}] (7:1) arc (7:353:1) --++ (-7:-0.18) decorate[decoration={random steps,segment length=2,amplitude=1pt}] {arc (-7:-353:0.82)} -- cycle; \draw[yellow] (8:1.5) foreach \hit in {\mylist} { -- (hit\hit .center)}; \ifnum\flagtwo=1 \foreach \ang in {-35,-5,35}{ \draw[radiation] (1,0)++(\ang:0.1 and 0.2) --++ (\ang:0.35); }\fi \end{tikzpicture}} \end{document}
- Animating light entry and radiation in a blackbody cavityby Sebastiano on February 5, 2026 at 9:04 pm
I am using the code from https://tikz.net/blackbody/ by Izaak Neutelings, which draws a blackbody cavity with an incoming yellow light beam and wavy red arrows representing the emitted radiation. I would like to animate the yellow light beam to show that light enters the cavity, and only afterward make the wavy red arrows appear to represent the radiation. % Author: Izaak Neutelings (March 2019) % Inspiration: https://tex.stackexchange.com/questions/203597/automatically-generate-graphics-which-shows-light-diffusion-on-a-rough-surface \documentclass[border=3pt,tikz]{standalone} \usetikzlibrary{decorations.pathmorphing,decorations.markings,calc} % for random steps & snake \usetikzlibrary{arrows.meta} % for arrow size \tikzset{>=latex} % for LaTeX arrow head \tikzstyle{radiation}=[-{Latex[length=2,width=1.5]},red!95!black!50,opacity=0.7,very thin,decorate, decoration={snake,amplitude=0.7,segment length=2,post length=2}] \begin{document} % BLACK BODY \begin{tikzpicture}[scale=1,rotate=10] \shade[top color=black!60,bottom color=black!80,shading angle=10] % background (7:1) arc (7:355:1); \fill[thick,black,postaction=decorate, % rough inner surface decoration={markings,mark=between positions 0.55 and 1 step 0.03 with { \node[transform shape,inner sep=1pt] (hit\pgfkeysvalueof{/pgf/decoration/mark info/sequence number}) {}; }}] (7:1) arc (7:353:1) --++ (-7:-0.18) decorate[decoration={random steps,segment length=2,amplitude=1pt}] {arc (-7:-353:0.82)} -- cycle; \draw[yellow] % connect light ray to random points (8:1.5) -- (hit6.center) -- (hit1.center) -- (hit15.center) -- (hit5.center) -- (hit9.center) -- (hit14.center) -- (hit2.center) -- (hit10.center) -- (hit3.center) -- (hit4.center) -- (hit11.center) -- (hit13.center); \foreach \ang in {-35,-5,35}{ \draw[radiation] (1,0)++(\ang:0.1 and 0.2) --++ (\ang:0.35); } \end{tikzpicture} % BLACK BODY - without infalling light \begin{tikzpicture}[scale=1,rotate=10] \shade[top color=black!60,bottom color=black!80,shading angle=10] % background (7:1) arc (7:355:1); \fill[thick,black,postaction=decorate, % rough inner surface decoration={markings,mark=between positions 0.55 and 1 step 0.03 with { \node[transform shape,inner sep=1pt] (hit\pgfkeysvalueof{/pgf/decoration/mark info/sequence number}) {}; }}] (7:1) arc (7:353:1) --++ (-7:-0.18) decorate[decoration={random steps,segment length=2,amplitude=1pt}] {arc (-7:-353:0.82)} -- cycle; \foreach \ang [evaluate={\angin=\ang-180+10*rand; \r=0.76+0.05*rand; \l=0.4+0.02*rand}] in {10,45,100,140,190,240,290,330}{ \draw[radiation] (\ang:\r) --++ (\angin:\l); } \foreach \ang in {-30,0,30}{ \draw[radiation] (1,0)++(\ang:0.05 and 0.16) --++ (\ang:0.35); } \end{tikzpicture} \end{document}
- Tikzcd's "crossing over" option and transparent backgroundsby Ben Steffan on February 5, 2026 at 8:55 pm
I currently have the following simple setup for producing commutative diagrams using tikzcd and exporting them to .svg's, following the two most popular answers on this question: Put the code for the diagram in a standalone tex file. Compile. Convert to .svg using dvisvgm. This... works, mostly (better ideas are warmly welcome), but I'm running into one issue in particular that is slightly annoying. Consider the following example: \documentclass[crop,tikz]{standalone} \usetikzlibrary{cd} \begin{document} \begin{tikzcd} & & & \{1\} \ar[dd] \ar[dl] \\ \{0\} \ar[rr] \ar[dd] & & \{0, 1\} \\ & \{2\} \ar[dl] \ar[rr] & & \{1, 2\} \ar[dl] \\ \{0, 2\} \ar[rr] & & \{0, 1, 2\} \ar[from=uu, crossing over] \end{tikzcd} \end{document} If you compile this, the resulting pdf looks like this: Great, that looks fantastic. But if you now go and run dvisvgm yourfilenamehere.dvi and drop the resulting svg into something with a non-white background, you get this: This is bad for two obvious reasons: Text and background color are way too similar, and the crossing over arrow now lives on top of a white box. This box is an artifact of the way crossing over works, which simply adds a preaction to the arrow path that draws a background color colored rectangle. Consequently, both problems can be avoided by setting color and background color to something that works, see e.g. this answer. Suppose now, however, that I don't know what color the background of the document/website/etc. the svg will be embedded in has. Perhaps I know that it's going to be a dark background, so that setting the text color to white will take care of the first issue, but unless I know the precise shade of the background I can't set the crossing over box' color to perfectly match. My question, thus, is whether there is a (nice) way to solve this second issue when the final background color is not precisely known (if you have a way to dynamically alter the text color, I'd be happy to hear about it as well). (By "nice" here I mean that e.g. it's obviously possible to draw the two "pieces" of the arrow being crossed over separately and avoid crossing over entirely, but this seems to annoying to do in general unless there is some way to package it up into a flexible macro/tikz key).
- How does mathrsfs and LaTeX generally store kerning information?by DiracComb16796 on February 5, 2026 at 7:58 pm
I am trying to explore how robust Typst is as an alternative to LaTeX by trying to convert some documents from LaTeX to Typst. One limitation I ran into is fonts, as some fonts standard to some mathematical circles aren't built into the Typst compiler. Moreover, Typst only accesses external fonts through .ttf and .otf files, which means any fonts that don't have versions with these files aren't gonna be able to make the jump, or at least not easily. Case in point, the mathrsfs font, used for things like Schwartz spaces or spaces of distributions in Distribution theory, or Lagrangian and Hamiltonian density in Quantum Field Theory, doesn't have .otf or .ttf files, as seen here. Now, as outlined in this post, there is a way to convert it from .pfb to .otf using Font Forge. However, kerning doesn't work for basic characters or subscripts/superscripts. Thus, did the conversion from .pfb to .otf destroy built-in kerning information, or does LaTeX store kerning information somewhere else, because kerning works just fine in LaTeX with \mathscr? EDIT: Okay, I've learned that the .afm files also provided in the same location are what hold the kerning information for the font. However, that leaves me more confused, because looking at, e.g. rsfs10.afm, we have: StartFontMetrics 2.0 Comment Copyright Conversion from mf curves by Metafog (c) 1995 Richard Kinch Comment Panose 3 0 5 5 4 0 0 9 0 2 FullName rsfs10 FontName rsfs10 FamilyName rsfs10 Weight Roman Notice Copyright (c) Taco Hoekwater, 1998. All rights reserved. Version 001.000 IsFixedPitch false ItalicAngle -12.00 FontBBox -2 -300 1240 728 Ascender 700 Descender -200 XHeight 233 CapHeight 728 UnderlinePosition -100 UnderlineThickness 50 StdHW 22 StdVW 22 EncodingScheme FontSpecific StartCharMetrics 27 C 66 ; WX 908 ; N B ; B 34 -14 928 708 ; C 67 ; WX 666 ; N C ; B 26 -19 812 714 ; C 68 ; WX 774 ; N D ; B 63 -31 849 708 ; C 69 ; WX 562 ; N E ; B 45 -8 711 708 ; C 70 ; WX 895 ; N F ; B 41 -22 990 728 ; C 71 ; WX 610 ; N G ; B 11 -22 737 717 ; C 72 ; WX 969 ; N H ; B 33 -22 1240 717 ; C 73 ; WX 809 ; N I ; B 58 -17 952 717 ; C 74 ; WX 1052 ; N J ; B 98 -300 1139 717 ; C 75 ; WX 914 ; N K ; B 33 -22 1200 717 ; C 76 ; WX 874 ; N L ; B 12 -17 1033 717 ; C 77 ; WX 1080 ; N M ; B 29 -36 1215 719 ; C 78 ; WX 902 ; N N ; B 33 -22 1206 719 ; C 79 ; WX 738 ; N O ; B 95 -8 803 708 ; C 80 ; WX 1013 ; N P ; B 94 -22 1033 717 ; C 81 ; WX 883 ; N Q ; B 54 -17 884 717 ; C 82 ; WX 850 ; N R ; B -2 -17 887 717 ; C 83 ; WX 868 ; N S ; B 32 -22 1018 708 ; C 84 ; WX 747 ; N T ; B 94 -22 995 728 ; C 85 ; WX 800 ; N U ; B 54 -17 959 717 ; C 86 ; WX 622 ; N V ; B 55 -17 857 717 ; C 87 ; WX 805 ; N W ; B 47 -17 1032 717 ; C 88 ; WX 944 ; N X ; B 103 -17 1132 717 ; C 89 ; WX 710 ; N Y ; B 57 -17 965 717 ; C 90 ; WX 821 ; N Z ; B 81 -17 1034 717 ; C 127 ; WX 278 ; N tie ; B 394 368 796 520 ; C 65 ; WX 803 ; N A ; B 35 -8 1000 717 ; EndCharMetrics StartKernData StartKernPairs 1 KPX B tie 194 EndKernPairs EndKernData EndFontMetrics with only the B and tie character having any sort of kerning information, so I am very confused how TeX/LaTeX is able to properly space these characters, especially with things like superscripts. I suppose it could be the sizing of the bounding boxes, but if that's so, why is Typst having issues?
- Adding Value Labels to the Centre of Stacked Bars in TikZ/PGFPlotsby Fernando on February 5, 2026 at 5:11 pm
I was looking at this post (pgfplots stacked bar plot: distance to axis, padding between bars) and was wondering how to add the value of each stacked segment directly in the middle of its corresponding bar. For example, for βSomething elseβ, if the value associated with βTransferβ is 5, how can that 5 be placed in the centre of the red segment? The MWE: \documentclass{article} \usepackage{xcolor} \usepackage{tikz} \usepackage{pgfplots} \definecolor{transfertoserver}{HTML}{D7191C} \definecolor{database}{HTML}{FDAE61} \definecolor{transfertoclient}{HTML}{ABDDA4} \definecolor{rendering}{HTML}{2B83BA} \begin{document} \begin{figure} \centering \begin{tikzpicture} \begin{axis}[ xbar stacked, legend style={ legend columns=4, at={(xticklabel cs:0.5)}, anchor=north, draw=none }, ytick=data, axis y line*=none, axis x line*=bottom, tick label style={font=\footnotesize}, legend style={font=\footnotesize}, label style={font=\footnotesize}, xtick={0,5,10,15,20,25}, width=.8\textwidth, bar width=6mm, xlabel={Time in Seconds}, yticklabels={Database Optimizations, Reference Timing, Something Else}, xmin=0, xmax=25, area legend, y=8mm, enlarge y limits={abs=0.625}, ] \addplot[transfertoserver,fill=transfertoserver] coordinates % Transfer {(0.38,0) (0.38,1) (5,2)}; \addplot[database,fill=database] coordinates % Database {(2.4,0) (9.66,1)(5,2)}; \addplot[transfertoclient,fill=transfertoclient] coordinates % Transfer {(0.23,0) (0.23,1)(5,2)}; \addplot[rendering,fill=rendering] coordinates % Rendering {(14.66,0) (14.66,1)(5,2)}; \legend{Transfer,Database,Transfer,Rendering} \end{axis} \end{tikzpicture} \caption{Performance Benefit by Database Optimizations} \label{fig:performance:database} \end{figure} \end{document}
- The best method to make color changes across any text for use with changes packageby td211 on February 5, 2026 at 4:47 pm
When I use the changes package, its commands like \deleted and \added don't work through all environments. For example: the deleted command doesn't work when an equation environment is within it. I found some methods to fix this by using something like \setdeletedmarkup{\textcolor{red}{#1}}. However this doesn't always work (itemize for example errors out). Is there a way to make text enclosed by this command (not necessarily with the changes packages, but I prefer it) a specific color across all environments? Edit: MWE: \documentclass[]{article} \usepackage{changes} \usepackage{amsmath} \setdeletedmarkup{{\color{red} #1}} \begin{document} \deleted{ Text 1 \begin{equation} a + b = c \end{equation} Text 2 } \end{document}
- How to reposition reledmac footnotes to the bottom of the pageby brian-ammon on February 5, 2026 at 4:13 pm
Is it possible to reposition reledmac footnotes to the position of regular footnotes at the bottom of the page on all pages? In the following MWE, (only) on the last page, the footnotes are placed immediately below the text block instead of above the footer, as can be seen in the attached image. \documentclass{book} \usepackage{lipsum} \usepackage{reledmac} \begin{document} A\footnoteA{a} \begin{quote} \lipsum[1] \end{quote} \lipsum[1-4] A\footnoteA{a} \end{document} Following the advice in https://tex.stackexchange.com/a/752571/, I have tried including \beforenotesX[A]{0pt plus 1fil}% or rather 1fill which does indeed reposition the notes to the bottom of the page on all pages. Unfortunately, however, this solution also introduces a page break immediately after the quote environment, which is not desired.
- Systematically name and style columns in a plotted tableby cis on February 5, 2026 at 3:24 pm
What is the best way to style several columns in a systematic way, say column names like p1, p2,... and maybe other styles. I tried a foreach-loop, but this does not work. In the image below the current output is shown on the left, and my preferred output is shown on the right. The manual way (as seen below in the column 'No') is clear. However, I have a variable number of columns (the real data comes from a csv file) so I cannot add all column names manually. \documentclass[margin=5pt, varwidth]{standalone} \usepackage{pgfplotstable} \pgfplotsset{compat=1.18} \begin{document} % Has no effect ==================== \foreach \RowNo in {1,...,5}{ \pgfplotstableset{ columns/\RowNo/.style={column name=p\RowNo}, }}% =========================== \pgfplotstabletypeset[col sep=comma, columns/0/.style={column name=No}, ]{ 1, 1, 2, 3, 4, 5, 6 2, 1, 2, 3, 4, 5, 6 3, 1, 2, 3, 4, 5, 6 4, 1, 2, 3, 4, 5, 6 5, 1, 2, 3, 4, 5, 6 } \end{document}
- module 'lua-uni-data' not found [closed]by user242047 on February 5, 2026 at 2:02 pm
I have a full texlive installation stored locally in my path. After updating with tlmgr, I am now unable to compile any document. Compilation fails with the following error: Inserting `luaotfload.aux.set_capheight' in `luaotfload.patch_font'. Inserting `luaotfload.aux.set_xheight' in `luaotfload.patch_font'. Inserting `luaotfload.rewrite_fontname' in `luaotfload.patch_font'....ex-local/t exlive/texmf-dist/tex/latex/l3kernel/expl3.lua:318: module 'lua-uni-data' not fo und: no field package.preload['lua-uni-data'] [kpse lua searcher] file not found: 'lua-uni-data' stack traceback: [C]: in function 'require' ...ex-local/texlive/texmf-dist/tex/latex/l3kernel/expl3.lua:318: in main chunk [C]: in function 'require' [\directlua]:1: in main chunk. \lua_now:e #1->\__lua_now:n {#1} l.1 The last time I updated my local tl installation was several months ago. Is there some setting/config I need to change? ETA: just to avoid any confusion, even this extremely minimal example fails with this error: \documentclass{letter} \begin{document} content... \end{document} Cheers,
- Make perfect circular diagramsby Fran on February 5, 2026 at 12:23 pm
I know that I can make circular diagrams with the nice smartdiagram package, but arrows do not fit perfectly in a imaginary circle. In fact, the diagram is far from a circle when there are only two or three nodes: \documentclass{standalone} \usepackage{smartdiagram} \begin{document} \smartdiagramset{ connection color=red, module shape= circle, circular distance=2cm, uniform color list=white for 6 items, uniform arrow color=true, arrow color=black} \smartdiagram[circular diagram:clockwise]{foo, bar} \end{document} I know also that there are several examples in this site about making circular diagrams without this package, but translating these examples to diagrams with a different numbers of nodes is complex, so I tried an automated solution with tikz (without really knowing what I was doing, I have to admit) so that I only have to modify a list of nodes in \mylist and little more to obtain the result: \documentclass[border=2mm]{standalone} \usepackage{tikz} \usetikzlibrary{arrows.meta} \begin{document} \begin{tikzpicture}[ > = Stealth, every node/.style = {circle, draw, thick, minimum width=1cm, align=center} ] \def\mylist{foo, bar, baz} % play with this \foreach \x [count=\i from 1] in \mylist {\xdef\n{\i}} \def\radio{2cm} % and this if needed \foreach \texto [count=\i from 0] in \mylist{ \pgfmathsetmacro\ang{-\i*360/\n} \node (n\i) at (\ang:\radio) {\texto}; } \foreach \dummy [count=\i from 0] in \mylist{ \pgfmathsetmacro\j{int(mod(\i+1,\n))} \pgfmathsetmacro\angini{-\i*360/\n} \pgfmathsetmacro\angfin{-\j*360/\n} \pgfmathsetmacro\outang{mod(\angini - 90 + 720, 360)} \pgfmathsetmacro\inang {mod(\angfin + 90 + 720, 360)} \draw[->, thick, line width=1.4pt] (n\i) to[out=\outang, in=\inang, looseness=.9] (n\j); % and with the looseness } \end{tikzpicture} \end{document} Mainly it works. The problem is that like in smartdiagram, the arrows don't perfectly follow an imaginary circle, that was the idea behind getting involved in this business. Playing with looseness is possible to correct a bit the curvature of the arrows, but it's tedious and the result is never perfect. So, the result should be ideally near to the image below (that I modified manually in Inkscape) and still require minimal settings to adapt the code to diagrams of n nodes. Fixes of the MWE as well as alternative approaches are welcome. Edit Thank you all for the excellent suggestions. This time, I am truly sorry I can only accept one.
- newwrite: How to add horizontal arguments to a newrite with a loopby cis on February 5, 2026 at 11:54 am
How can I add horizontal arguments (p1, p2, ... [which will later become calculations]) to a newwrite using a loop? A loop doesn't seem to be allowed in \immediate\write\MyFile{...}. \documentclass[varwidth, border=10pt]{standalone} \usepackage{pgfplotstable} \pgfplotsset{compat=1.18} \begin{document} \def\OutFileName{mydata.csv} \newwrite\MyFile \immediate\openout\MyFile=\OutFileName \foreach \n in {2,4}{%% n foreach %%% \foreach \k in {0,...,\n}{% k foreach %%% \immediate\write\MyFile{\n, \k %\foreach \p in {1,2}{, \p} % DOES NOT WORK } }% end of k foreach %%% }%% end of n foreach %%% \immediate\closeout\MyFile %\input{\OutFileName}% Test \pgfplotstableread[col sep=comma]{\OutFileName}{\bcdTable} \section{Table} \pgfplotstabletypeset[ columns/0/.style={column name=$n$}, columns/1/.style={column name=$k$}, columns/2/.style={column name=$p1$},% just missing columns/3/.style={column name=$p2$},% just missing ]{\bcdTable} \end{document}
- LuaLaTeX: changing relative position of letter and its bounding box in math modeby Jinwen on February 5, 2026 at 11:26 am
Using the code adopted from this answer, I am able to modify the position and width of \check, \widehat, etc. for various math characters (as a first step towards answering this earlier question). However, as one can see, the letters are not "centered" in the bounding box. As a result, the spacing between different letters and symbols appears strange. (For example, to make the symbols on top placed at right place, I have to move the letters via xoffset, but then its position relative to the bounding box is not quite appropriate.) With the keywords known to me as in that answer, it seems one could only move the letter, but not its bounding box. Is there some other keywords one could use in order to have more control over this situation? (Actually, just out of curiosity, may I also ask where can one find a list of available keywords/switches that can be tweaked?) Below is a MWE. \documentclass{article} \usepackage{kpfonts-otf} \usepackage{unicode-math} \usepackage{luacode} \begin{luacode*} local adjustments = { ["Asana-Math.otf"] = { ["πΏ"] = { xoffset = 0.03, -- yoffset = -0.5, width = 0.75, -- height = 0.5, -- depth = 0, }, ["π"] = { xoffset = -0.05, -- yoffset = -0.5, width = 0.9, -- height = 0.5, -- depth = 0, }, ["π"] = { xoffset = -0.05, -- yoffset = -0.5, width = 0.9, -- height = 0.5, -- depth = 0, }, } } do local data = io.loaddata(kpse.find_file("font-cff.lmt")) data = data:gsub("<const>", ""):gsub("pack_result_tagged =", "fonts.handlers.otf.pack_result_tagged =") load(data, "font-cff.lua", "t", luaotfload.fontloader)() end luatexbase.add_to_callback( "luaotfload.patch_font", function(tfmdata, specification, font_id) local path = tfmdata.specification.filename local filename = file.basename(path) local by_filename = adjustments[filename] if not by_filename then return end tfmdata.streamprovider = 1 local size = tfmdata.size local units_per_em = tfmdata.units_per_em for character, adjustment in pairs(by_filename) do local codepoint = utf8.codepoint(character) local index = tfmdata.characters[codepoint].index local character = tfmdata.characters[codepoint] local shapes = fonts.hashes.shapes[font_id].glyphs local streams = fonts.hashes.streams[font_id].streams local original_shape = shapes[index] local new_stream = fonts.handlers.otf.pack_result_tagged( original_shape.segments, original_shape.width, (adjustment.xoffset or 0) * units_per_em, -(adjustment.yoffset or 0) * units_per_em ) streams[index] = new_stream for _, dimen in pairs { "width", "height", "depth" } do if adjustment[dimen] then character[dimen] = adjustment[dimen] * size end end end end, "rewrite-characters" ) \end{luacode*} \setmathfont{Asana-Math.otf}[range={it/{Latin,latin},bfit/{Latin,latin},up/num,bfup/num}] \begin{document} \[ \check{L} \check{M} \check{N} \] \[ \widehat{L} \widehat{M} \widehat{N} \] \[ \widetilde{L} \widetilde{M} \widetilde{N} \] \fbox{\( L \)} \fbox{\( \check{L} \)} \fbox{\( \widehat{L} \)} \fbox{\( M \)} \fbox{\( \check{M} \)} \fbox{\( \widehat{M} \)} \fbox{\( N \)} \fbox{\( \check{N} \)} \fbox{\( \widehat{N} \)} \end{document}
- Looking for a symbol like big \astby Dimitrios ANAGNOSTOU on February 5, 2026 at 9:16 am
The question is rather simple. How to obtain the following big asterisk symbol? I apologize if it is duplicate. Thank you very much.
- My LaTeX code is super slow [closed]by YCH817 on February 5, 2026 at 7:00 am
I want to do something like this : display binary operation evaluation in different ways (decomposing the binary evaluation in two unary evaluation, etc) with a much simple syntax, i.e. : Here I use postfix and infix notation for function applications, for example : in row 7 of this table, (c1 β c2) can be decomposed into c2 (c1 β _) , in which (c1 β _) is the first unary application (marked with blue framed box), c2 (c1 β _) is the second one (marked with blue framed box); and Homo stands for the Hom functor, Expo stands for Exponent operation in Cartesian Closed Category. However the compilation tooks so much time, I think I use too much \csname...\endcsname, \@ifnextchar and so on. Seeking for better solution like expl3 or LuaLaTeX. Here is the full MWE : \documentclass[10pt,a4paper]{article} % for font \usepackage{pifont} % for \ding \usepackage{fontspec} % for font % for programming \usepackage{etoolbox} % patch \usepackage{calc} % calculation \usepackage{keyval} % key-value settings % for layout \usepackage[ a4paper, ]{geometry} % \usepackage{multicol} % for multiple columns % for mathematics \usepackage{amsmath} % \usepackage{amssymb} % \usepackage{amsfonts} % for \mathbf \mathsf \mathit \usepackage{mathtools} % for \overbracket , \underbracket \usepackage{stackengine} % for \stackon , \stackunder % for color \usepackage[ dvipsnames, svgnames, table ]{xcolor} % % for boxes \usepackage[ export ]{adjustbox} % for box scaling \usepackage{relsize} % for relevative font size \linespread{2} \setlength\parindent{0pt} % cancel indent \setlength{\columnseprule}{.4pt} % set the width of rule used in multicolumn environment % ---- enable stack for math equations \stackMath % ----- adding boxes with colored frames \newcommand{\cfbox}[2][blue]{% \setlength{\fboxsep}{0pt}% \setlength{\fboxrule}{0.4pt}% \colorlet{currentcolor}{.}% {\color{#1}% \fbox{\color{currentcolor}\ensuremath{#2}}}% } % ---- delimiters : \def\vts#1{\lvert#1\rvert} % verts \def\prs#1{\left(#1\right)} % parentheses \def\bcs#1{\left\{#1\right\}} % braces \def\bks#1{\left[#1\right]} % brackets \def\plr#1{\vphantom{(fg)}\smash{#1}}% to restrict box height and depth \def\etc{\plr{\rm etc}} % et cetera \def\occ{\plr{\texttt{\_}}} % similar to _ in lean or haskell % ----- Following code used for register variable types \makeatletter \def\RegistVarType#1BG#2Font#3{ \colorlet{color#1}{#2} \expandafter\newif\csname ifColorVarType#1\endcsname % determine whether the variable is highlighted \expandafter\def\csname var#1\endcsname##1{% \setlength{\fboxsep}{0pt}% \setlength{\fboxrule}{0pt}% \let\RegistVarTypeCache=\relax \csname ifColorVarType#1\endcsname{% \gdef\RegistVarTypeCache{\colorbox{color#1}}% }\else{% \gdef\RegistVarTypeCache{\fbox}% }\fi% \RegistVarTypeCache{\ensuremath{\plr{#3 ##1}}}% } \csname ColorVarType#1true\endcsname % enable highlighting is default } % ----- Following code used for register a specific family of variables \def\RegistVarFreqType#1Name#2{ \@ifnextchar D% {\RegistVarFreqType@{#1}{#2}} {\RegistVarFreqType@{#1}{#2}Disp{#2}} } \def\RegistVarFreqType@#1#2Disp#3{% \expandafter\def\csname #1#2\endcsname{% \csname var#1\endcsname{{#3}^{}}% } \expandafter\def\csname #1#2n\endcsname##1{% \csname var#1\endcsname{{#3}_{##1}^{}}% } \@ifnextchar p {\RegistVarFreqType@Loop{#1}{#2}{p}{'}{#3}} {\relax} } \def\RegistVarFreqType@Loop#1#2#3#4#5p{% \expandafter\def\csname #1#2#3\endcsname{% \csname var#1\endcsname{{#5}#4}% } \expandafter\def\csname #1#2#3n\endcsname##1{% \csname var#1\endcsname{{#5}#4_{##1}}% } \@ifnextchar p {\RegistVarFreqType@Loop{#1}{#2}{#3p}{#4'}{#5}} {\relax} } % ----- Used for registering operation form (Type B) \def\RegistOprFormTypeBName#1Dflt#2{% \expandafter\newcommand\expandafter{\csname #1\endcsname}[1][#2]{\plr{\ensuremath{% \xrightarrow[\text{\scriptsize\(\plr{##1}\)}]{}% }}} } \def\RegistOprEvalTypeB#1Form#2{% \let\RegistOprEvalTypeB@opr=\relax% \expandafter\def\csname ev#2\endcsname{% \@ifnextchar [% {\csname ev#2@Yopt\endcsname} {\csname ev#2@Nopt\endcsname}% }% \expandafter\def\csname ev#2@Yopt\endcsname[##1]{% \def\RegistOprEvalTypeB@opr{\csname #2\endcsname[{##1}]}% \csname ev#2@\endcsname % <--- η§»ε°θΏιοΌ }% \expandafter\def\csname ev#2@Nopt\endcsname{% \def\RegistOprEvalTypeB@opr{\csname #2\endcsname}% \csname ev#2@\endcsname % <--- η§»ε°θΏιοΌ }% \expandafter\def\csname ev#2@\endcsname{% \@ifnextchar <% {\csname ev#2@YargL@\endcsname} {\@ifnextchar >% {\csname ev#2@YargR@\endcsname} {\@ifnextchar .% {\csname ev#2@YargL@Qp@\endcsname} {\RegistOprEvalTypeB@opr}}}% }% \expandafter\def\csname ev#2@YargL@Qp@\endcsname.##1{% \@ifnextchar .% {\csname ev#2@YargL@Qp@YargR@\endcsname{##1}}% {\relax}% }% \expandafter\def\csname ev#2@YargL@Qp@YargR@\endcsname##1.##2{% \@ifnextchar p% {\csname ev#2@YargL@Qp@YargR@Yp\endcsname{##1}{##2}}% {\csname evB#1\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}}% }% \expandafter\def\csname ev#2@YargL@Qp@YargR@Yp\endcsname##1##2p{% \csname evB#1p\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}% }% \expandafter\def\csname ev#2@YargL@\endcsname<##1{% \@ifnextchar p% {\csname ev#2@YargL@Yp@\endcsname{##1}}% {\csname ev#2@YargL@Np@\endcsname{##1}}% }% \expandafter\def\csname ev#2@YargL@Np@\endcsname##1{% \@ifnextchar .% {\csname ev#2@YargL@Np@YargR@\endcsname{##1}}% {\relax}% }% \expandafter\def\csname ev#2@YargL@Np@YargR@\endcsname##1.##2{% \@ifnextchar p% {\csname ev#2@YargL@Np@YargR@Yp\endcsname{##1}{##2}}% {\csname evB#1LR\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}}% }% \expandafter\def\csname ev#2@YargL@Np@YargR@Yp\endcsname##1##2p{% \csname evB#1LRp\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}% }% \expandafter\def\csname ev#2@YargL@Yp@\endcsname##1p{% \@ifnextchar .% {\csname ev#2@YargL@Yp@YargR@\endcsname{##1}}% {\csname evB#1Lp\endcsname{\RegistOprEvalTypeB@opr}{##1}}% }% \expandafter\def\csname ev#2@YargL@Yp@YargR@\endcsname##1.##2{% \@ifnextchar p% {\csname ev#2@YargL@Yp@YargR@Yp\endcsname{##1}{##2}}% {\csname evB#1LpR\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}}% }% \expandafter\def\csname ev#2@YargL@Yp@YargR@Yp\endcsname##1##2p{% \csname evB#1LpRp\endcsname{\RegistOprEvalTypeB@opr}{##1}{##2}% }% \expandafter\def\csname ev#2@YargR@\endcsname>##1{% \@ifnextchar p% {\csname ev#2@YargR@Yp@\endcsname{##1}}% {\csname ev#2@YargR@Np@\endcsname{##1}}% }% \expandafter\def\csname ev#2@YargR@Np@\endcsname##1{% \@ifnextchar .% {\csname ev#2@YargR@Np@YargL@\endcsname{##1}}% {\csname evB#1Rp\endcsname{\RegistOprEvalTypeB@opr}{##1}}% }% \expandafter\def\csname ev#2@YargR@Np@YargL@\endcsname##1.##2{% \@ifnextchar p% {\csname ev#2@YargR@Np@YargL@Yp\endcsname{##1}{##2}}% {\csname evB#1RL\endcsname{\RegistOprEvalTypeB@opr}{##2}{##1}}% }% \expandafter\def\csname ev#2@YargR@Np@YargL@Yp\endcsname##1##2p{% \csname evB#1RLp\endcsname{\RegistOprEvalTypeB@opr}{##2}{##1}% }% \expandafter\def\csname ev#2@YargR@Yp@\endcsname##1p{% \@ifnextchar .% {\csname ev#2@YargR@Yp@YargL@\endcsname{##1}}% {\csname evB#1Rp\endcsname{\RegistOprEvalTypeB@opr}{##1}}% }% \expandafter\def\csname ev#2@YargR@Yp@YargL@\endcsname##1.##2{% \@ifnextchar p% {\csname ev#2@YargR@Yp@YargL@Yp\endcsname{##1}{##2}}% {\csname evB#1RpL\endcsname{\RegistOprEvalTypeB@opr}{##2}{##1}}% }% \expandafter\def\csname ev#2@YargR@Yp@YargL@Yp\endcsname##1##2p{% \csname evB#1RpLp\endcsname{\RegistOprEvalTypeB@opr}{##2}{##1}% }% } \makeatother % ----- evaluation for unary operation \def\evU#1#2{\plr{\cfbox{% {#2}\mathop{#1}% }}} \def\evUp#1#2{\plr{\cfbox{% \prs{{#2}\mathop{#1}} }}} \def\evUn#1#2{\cfbox{% \plr{{#2}^{#1}} }} \def\evUnp#1#2{\cfbox{% \prs{\plr{{#2}^{#1}}} }} % ------- evaluation for binary operation (infix) \def\evBin#1#2#3{\cfbox[Purple]{\plr{% {#2}\mathbin{#1}{#3}% }}} \def\evBinp#1#2#3{\cfbox[Purple]{% \prs{\plr{{#2}\mathbin{#1}{#3}}}% }} \def\evBinLp#1#2{\plr{\cfbox{% \prs{{#2}\mathbin{#1}\occ} }}} \def\evBinRp#1#2{\plr{\cfbox{% \prs{\occ\mathbin{#1}{#2}} }}} \def\evBinLpR#1#2#3{%\plr{% \evU{\evBinLp{#1}{#2}}{#3} }%} \def\evBinRpL#1#2#3{%\plr{% \evU{\evBinRp{#1}{#3}}{#2} }%} \def\evBinLpRp#1#2#3{%\plr{% \evUp{\evBinLp{#1}{#2}}{#3}% }%} \def\evBinRpLp#1#2#3{%\plr{% \evUp{\evBinRp{#1}{#3}}{#2}% }%} \def\evBinLR#1#2#3{\plr{\cfbox{% \cfbox{\plr{{#2}\mathbin{#1}{}}}{#3}% }}} \def\evBinLRp#1#2#3{\plr{\cfbox{% \prs{\cfbox{\plr{{#2}\mathbin{#1}{}}}{#3}}% }}} \def\evBinRL#1#2#3{\plr{\cfbox{% {#2}\cfbox{\plr{{}\mathbin{#1}{#3}}}% }}} \def\evBinRLp#1#2#3{\plr{\cfbox{% \prs{{#2}\cfbox{\plr{{}\mathbin{#1}{#3}}}}% }}} \begin{document} % ----- Regist variable types \RegistVarType{obj}BG{pink}Font{\sf} \RegistVarType{cat}BG{Rhodamine}Font{\sf} % ----- Regist frequently used variables \RegistVarFreqType{obj}Name{c}ppppp \RegistVarFreqType{cat}Name{C}ppppp % ----- Regist constants \RegistVarFreqType{cat}Name{Cat}Disp{Cat} \RegistVarFreqType{cat}Name{Set}Disp{Set} % ----- Regist operators, Disp stands for Display \RegistOprFormTypeBName{Homo}Dflt{\catC} % functor : hom % ----- Regist operator evaluation types \RegistOprEvalTypeB{in}Form{Homo} \verb|$\evHomo[\catC]$| will produce $\evHomo[\catC]$; \\ \verb|$\evHomo[\catC].{\objcn1}.{\objcn2}$| will produce $\evHomo[\catC].{\objcn1}.{\objcn2}$; \\ \verb|$\evHomo[\catC].{\objcn1}.{\objcn2}p$| will produce $\evHomo[\catC].{\objcn1}.{\objcn2}p$; \\ \verb|$\evHomo[\catC]<{\objcn1}.{\objcn2}$| will produce $\evHomo[\catC]<{\objcn1}.{\objcn2}$; \\ \verb|$\evHomo[\catC]<{\objcn1}.{\objcn2}p$| will produce $\evHomo[\catC]<{\objcn1}.{\objcn2}p$; \\ \verb|$\evHomo[\catC]<{\objcn1}p$| will produce $\evHomo[\catC]<{\objcn1}p$; \\ \verb|$\evHomo[\catC]<{\objcn1}p.{\objcn2}$| will produce $\evHomo[\catC]<{\objcn1}p.{\objcn2}$; \\ \verb|$\evHomo[\catC]<{\objcn1}p.{\objcn2}p$| will produce $\evHomo[\catC]<{\objcn1}p.{\objcn2}p$; \\ \verb|$\evHomo[\catC]>{\objcn2}.{\objcn1}$| will produce $\evHomo[\catC]>{\objcn2}.{\objcn1}$; \\ \verb|$\evHomo[\catC]>{\objcn2}.{\objcn1}p$| will produce $\evHomo[\catC]>{\objcn2}.{\objcn1}p$; \\ \verb|$\evHomo[\catC]>{\objcn2}p$| will produce $\evHomo[\catC]>{\objcn2}p$; \\ \verb|$\evHomo[\catC]>{\objcn2}p.{\objcn1}$| will produce $\evHomo[\catC]>{\objcn2}p.{\objcn1}$; \\ \verb|$\evHomo[\catC]>{\objcn2}p.{\objcn1}p$| will produce $\evHomo[\catC]>{\objcn2}p.{\objcn1}p$; \end{document} The code for the syntax shown in the image is inside \def\RegistOprEvalTypeB, and you will find control sequence which name include following strings : Yopt : stands for "Yes, option exists" Nopt : stands for "No , option does not exist" YargL : stands for "Yes, argument on the left exists" NargL : stands for "No , argument on the left does not exist" Yp : stands for "Yes, add parentheses" Np : stands for "No , don't add parentheses" YargR : stands for "Yes, argument on the right exists" NargR : stands for "No , argument on the right does not exist" For example , For example , \csname ev#2@Yopt\endcsname means optional argument exists \csname ev#2@Nopt\endcsname means optional argument does not exist \csname ev#2@\endcsname means optional argument detection has finished, @ in the end means require further detection; \csname ev#2@YargL@\endcsname means argument on the left detected, @ in the end means require further detection: \csname ev#2@YargL@Yp@\endcsname means first parentheses is detected, @ in the end means require further detection; \csname ev#2@YargL@Np@YargR@\endcsname means argument on the right detected, @ in the end means require further detection; \csname ev#2@YargL@Np@YargR@Yp\endcsname means second parentheses is detected, output (c2 (c1 β _)) with two blue frame boxes otherwise output c2 (c1 β _) with two blue frame boxes otherwiseoutput (c1 β _) with one blue frame box \csname ev#2@YargL@Np@\endcsname means first parentheses is not detected, @ in the end means require further detection; \csname ev#2@YargL@Np@YargR@\endcsname means argument on the right detected, @ in the end means require further detection; \csname ev#2@YargL@Np@YargR@Yp\endcsname means second parentheses is detected, output (c1 β c2) with two blue frame boxes otherwise output c1 β c2 with two blue frame boxes otherwise do nothing \csname ev#2@YargR@\endcsname means argument on the right detected, @ in the end means require further detection; \csname ev#2Yarg@Yp\endcsname means first parentheses is detected, @ in the end means require further detection; \csname ev#2@YargR@Yp@YargL@\endcsname means argument on the left is detected, @ in the end means require further detection; \csname ev#2@YargR@Yp@YargL@Yp\endcsname means second parentheses is detected, output (c1 (_ β c2)) with two blue frame boxes otherwise output c1 (_ β c2) with two blue frame boxes otherwise output (_ β c2) with one blue frame box \csname ev#2YargR@Np\endcsname means first parentheses is not detected, @ in the end means require further detection; \csname ev#2@YargR@Np@YargL@\endcsname means argument on the left detected, @ in the end means require further detection; \csname ev#2@YargR@Np@YargL@Yp\endcsname means second parentheses is detected, output (c1 β c2) with two blue frame boxes otherwise output c1 β c2 with two blue frame boxes otherwise do nothing \csname ev#2@YargL@Qp@\endcsname meansbinary evaluation will not be decomposed into two unary evaluation . @ in the end means require further detection; \csname ev#2@YargL@Qp@YargR@\endcsname meansargument on the right is detected,@ in the end means require further detection; \csname ev#2@YargL@Qp@YargR@Yp\endcsname meansparentheses is detected,output (c1 β c2) with single violet box otherwiseoutput c1 β c2 with single violet box
- Left-aligning lines of text to left edge of right-aligned line?by Dan Li on February 5, 2026 at 1:36 am
What Iβm trying to accomplish is best illustrated as follows: The first line (βMonday, December 22, 2025, 16:00 ESTβ) is right-aligned to the text width (possibly by \hfill, but not a hard requirement). The second line (βNew York City, New Yorkβ) needs to be left-aligned to the left edge of that first line. In other words, the start of the M in βMondayβ and N in βNew Yorkβ are vertically aligned. How can this be done?
- Problem with the position of a graph (pgfplots)by Octavius on February 5, 2026 at 12:36 am
in the following code and in the attached image, the graph becomes misaligned. Could you please give me an idea on how to fix it? \documentclass{article} \usepackage{graphicx} % Required for inserting images \newcommand{\ocultar}[1]{} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{pdfpages} \usepackage{hyperref} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \usepackage[utf8]{inputenc} \usepackage[spanish]{babel} \usetikzlibrary{angles, quotes} \usepackage{fancyhdr} \usepackage{graphicx} \usepackage{array} \begin{document} \begin{center} \begin{tabular}{>{\centering}m{5cm} >{\centering}m{5cm} >{\centering}m{5cm}} % CRECIENTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[red, thick] {x+1}; \end{axis} \end{tikzpicture} & % DECRECIENTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[blue, thick] {-x+3}; \end{axis} \end{tikzpicture} & % CONSTANTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[black, thick] {3}; \end{axis} \end{tikzpicture} \\[2mm] \fbox{\begin{minipage}{4.5cm} \centering \textbf{Creciente.}\\ En este caso su pendiente\\ es \textcolor{red}{\textbf{POSITIVA}.} \end{minipage}} & \fbox{\begin{minipage}{4.5cm} \centering \textbf{Decreciente.}\\ En este caso su pendiente\\ es \textcolor{blue}{\textbf{NEGATIVA}.} \end{minipage}} & \fbox{\begin{minipage}{4.5cm} \centering \textbf{Constante.}\\ En este caso su pendiente\\ es \textbf{CERO}. \end{minipage}} \end{tabular} \end{center} \end{document}
- Inconsistent vertical spacing: longtable cells vs. normal paragraphs for algebra solution stepsby Oregon Math Tutor on February 4, 2026 at 10:11 pm
I'm creating a math worksheet for my Algebra 2 students with a two-column problem layout using longtable. I'm experiencing two related spacing issues with my step by step solutions layout: Inconsistent spacing before solution steps: Problems 1-4 (outside longtable) have tight spacing between the problem statement and solution steps, while problems 5-8 (inside longtable) have much larger spacing before the solution steps. Answer boxes crowding next row: In the two-column section, answer boxes at the bottom of cells are too close to the problem statements in the next table row. What I've tried: Adjusting \par\vspace values (made page 1 worse) Using \vskip instead of \par\vspace (broke page 1 alignment) Modifying \arraystretch and \extrarowheight (affected all rows uniformly, not the issue) Question: How can I achieve consistent vertical spacing before the solutionsteps environment both inside and outside longtable, while preventing answer boxes from crowding the next table row? MWE: \documentclass[14pt]{extarticle} % Packages \usepackage[margin=1in]{geometry} \usepackage{mathtools,amssymb,xcolor,array,longtable} % Colors \definecolor{solutionblue}{RGB}{0, 70, 160} \definecolor{highlightyellow}{RGB}{255, 255, 180} % Commands \newcommand{\sol}[1]{{\color{solutionblue}#1}} \newcommand{\answerbox}[1]{% \par\nobreak\vspace{4pt}% \noindent\hspace{0.25in}% \setlength{\fboxsep}{4pt}\setlength{\fboxrule}{1pt}% \fcolorbox{solutionblue}{highlightyellow}{% \bfseries\boldmath$\displaystyle\sol{#1}$% }\par% } % Solution steps environment - THIS IS WHERE THE SPACING ISSUE ORIGINATES \newenvironment{solutionsteps}{% \par\vspace{10pt}% % This adds different amounts of space in/out of longtable \noindent\hspace{0.25in}% \begingroup% \renewcommand{\arraystretch}{1.5}% $\begin{array}[t]{@{}>{\displaystyle}l @{\quad} l@{}}% }{% \end{array}$% \endgroup% } \begin{document} \section*{Multiply Polynomials (Problems 5-12)} \begin{longtable}{@{}p{0.48\textwidth}@{\hspace{0.04\textwidth}}p{0.48\textwidth}@{}} 5) $(4x - 3)(x + 6)$ & 6) $(3p - 2)(2p - 6)$ \\ \begin{solutionsteps} 4x(x) + 4x(6) - 3(x) - 3(6) & \\ 4x^2 + 24x - 3x - 18 & \end{solutionsteps} \answerbox{4x^2 + 21x - 18} & \begin{solutionsteps} 3p(2p) + 3p(-6) - 2(2p) - 2(-6) & \\ 6p^2 - 18p - 4p + 12 & \end{solutionsteps} \answerbox{6p^2 - 22p + 12} \\*[2.5em] % Row separator 7) $(3a - 6b)(7a + 6b)$ & 8) $(a + 7b)(7a - 4b)$ \\ % ISSUE: These problem statements are too close to boxes above \begin{solutionsteps} 21a^2 + 18ab - 42ab - 36b^2 & \\ 21a^2 - 24ab - 36b^2 & \end{solutionsteps} \answerbox{21a^2 - 24ab - 36b^2} & \begin{solutionsteps} 7a^2 - 4ab + 49ab - 28b^2 & \\ 7a^2 + 45ab - 28b^2 & \end{solutionsteps} \answerbox{7a^2 + 45ab - 28b^2} \\*[2.5em] % Row separator 9) $(x - 3)(x + 3)$ & 10) $(7r - 8)(7r + 8)$ \\ % ISSUE: These problem statements are too close to boxes above \begin{solutionsteps} x^2 + 3x - 3x - 9 & \\ \text{Difference of Squares} & \end{solutionsteps} \answerbox{x^2 - 9} & \begin{solutionsteps} 49r^2 + 56r - 56r - 64 & \\ \text{Difference of Squares} & \end{solutionsteps} \answerbox{49r^2 - 64} \\*[2.5em] % Row separator 11) $(3x + 3)^2$ & 12) $(4k - 2)^2$ \\ % ISSUE: These problem statements are too close to boxes above \begin{solutionsteps} (3x+3)(3x+3) & \\ 9x^2 + 9x + 9x + 9 & \end{solutionsteps} \answerbox{9x^2 + 18x + 9} & \begin{solutionsteps} (4k-2)(4k-2) & \\ 16k^2 - 8k - 8k + 4 & \end{solutionsteps} \answerbox{16k^2 - 16k + 4} \end{longtable} \end{document} Expected: Uniform spacing before solutionsteps in both sections, with adequate space between answer boxes and the next row's problem statements. Actual: See compiled output - Section 1 has tight spacing, Section 2 has loose spacing before steps but crowded spacing after answer boxes.
- Unexpected βcccβ labels appearing in a pgfplots graphby Octavius on February 4, 2026 at 8:51 pm
I have the following LaTeX code, and in the middle plot (the decreasing function) I cannot remove the letters βcccβ that appear on the graph. Does anyone have a suggestion on how to fix this? \documentclass{article} \usepackage{graphicx} % Required for inserting images \newcommand{\ocultar}[1]{} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{pdfpages} \usepackage{hyperref} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \usepackage[utf8]{inputenc} \usepackage[spanish]{babel} \usetikzlibrary{angles, quotes} \begin{document} \begin{center} \begin{tabular}{>{\centering}m{5cm} >{\centering}m{5cm} >{\centering}m{5cm}} % CRECIENTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[red, thick] {x+1}; \end{axis} \end{tikzpicture} & % DECRECIENTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[blue, thick] {-x+3}; \end{axis} \end{tikzpicture} & % CONSTANTE \begin{tikzpicture} \begin{axis}[ axis lines=middle, xmin=-3,xmax=6, ymin=-3,ymax=6, grid=both, width=5cm, height=5cm, ticks=none ] \addplot[black, thick] {3}; \end{axis} \end{tikzpicture} \end{document}
- How do I write an Ampersand in index entries? [closed]by Michael E. Klews on February 4, 2026 at 7:54 pm
Obviously I tried "& and \& : \index{key@A "& B} and the like, but it does not work.
- Custom Font and Bolding Not Compatible In Font Setup Commands [KOMA-Script] [closed]by nebulisx on February 4, 2026 at 3:40 am
I am trying to use \setkomafont to set the font of titles and headings, but when I try to use a custom font with \fontspec or \fontfamily, it overrides \bfseries instead of applying them both. So, when I use the command below, it only applies Roboto and the font size: \setkomafont{title}{\fontspec{Roboto}...} Other similar commands that I have tried but didn't work: \setkomafont{title}{\fontfamily{Roboto}...} % \setkomafont{title}{\fontfamily{Helvetica}...} % \setkomafont{title}{\fontfamily{Montserrat}...} % etc, etc When I use each of these commands alone, it also works fine \setkomafont{title}{...\bfseries\selectfont} % and \setkomafont{title}{\fontspec{Roboto}...\selectfont} As expected, the first command applies the bold font and the second command applies the Roboto font. A non-exhaustive list of l tried trying to fix this problem (we're just going to use \fontspec{Roboto} in all of them for simplicities sake I've gone insane enough. Just know that I tried many fonts in both koma-script and fontspec): \setkomafont{title}{{\fontspec{Roboto}}...\bfseries} \setkomafont{title}{{\fontspec{Roboto}}...\bfseries} % \setkomafont{title}{\fontspec{Roboto}{...\bfseries\selectfont}} % \setkomafont{title}{...\bfseries} \addtokomafont{title}{\fontspec{Roboto}} % \setkomafont{title}{\fontspec{Roboto}...} \addtokomafont{title}{\bfseries} % This one got rid of the font and made it bold instead XDDDDDDDDDDD I also went in Windows Shell to look at the luaotfload-tool package and force it to update after looking through the fontspec manual. I did not find anything being discussed in the KOMA-script manual or the The Not So Short Introduction to LaTeX, but I didn't do a thorough search. Edit: After digging through my File Explorer, I found out what the issue was. On Windows 11, "Roboto Regular" (Roboto-Regular.ttf) doesn't have any bold fonts in it nor are there any .ttf files with bold Roboto. This means only that Windows only has the upright font available for fontspec to work with. You need to download the font and tell fontspec where it is by creating a new font family in order for it to work. Working command: \newfontfamily\RobotoPre[Path = .../CustomFonts/, UprightFont = Roboto-VariableFont_wdth-wght.ttf, ItalicFont = Roboto-Italic-VariableFont_wdth-wght.ttf]{Roboto} \DeclareRobustCommand{\Roboto}{\RobotoPre} \setkomafont{title}{{\Roboto}\bfseries ...\selectfont} I got the font off of Google fonts. For bold fonts, it is included in the upright font files. Make sure you delete or change the comma in the file. Thank you for everyone in the comments who helped!
- Drawing a pulley systemby Fatai Bakare on February 1, 2026 at 8:32 am
I need to draw a pulley system as in the figure. How can I do that? Specific information about the figure: A block of mass Mo is on a horizontal surface and attached by a string to a hanging block, also of mass Mo , as shown in the figure. Friction between the block and the horizontal surface is negligible. The masses of the string and pulley are negligible, and the pulley can rotate with negligible friction around its axle.