henrikmidtiby / todonotes

The package lets the user mark things to do later, in a simple and and visually appealing way.
http://midtiby.blogspot.com/2008/05/updated-todonotes-package.html
180 stars 19 forks source link

Greek math letters are not printed in the list of todo notes #47

Open ghost opened 4 years ago

ghost commented 4 years ago

Feeding

\documentclass{article}
\pagestyle{empty}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
\setsansfont{TeX Gyre Heros}[Scale=0.88]
\setmonofont{TeX Gyre Cursor}
\setmathfont[Ligatures=TeX]{TeX Gyre Termes Math}
\usepackage{todonotes}
%%% Simplified http://tex.stackexchange.com/a/549106 :
\ExplSyntaxOn
\NewDocumentCommand{\myMacro}{m}{
\tl_set:Nn \l_tmpa_tl { #1 }
\regex_replace_all:NnN
\c_justaman_mymacro_greek_regex % search
{ \c{symit}\cB\{\1\cE\} } % replace
\l_tmpa_tl % token list to massage
\mathit{\tl_use:N \l_tmpa_tl}
}
\regex_const:Nn \c_justaman_mymacro_greek_regex
{% one or more Greek letters; fill up
([\c{alpha}\c{beta}\c{gamma}]+)
}
\ExplSyntaxOff
\begin{document}
\listoftodos
\clearpage
\noindent\(\myMacro{\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\alpha}\)
\todo[inline]{\(\myMacro{\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\alpha}\)}
\end{document}

to xelatex results in the correct second page

p2

but in the list of todo notes on the first page, the \alphas are missing:

p1

Any idea of what goes on here and how to repair this bug? Crosspost: http://latex.org/forum/viewtopic.php?p=113104.

henrikmidtiby commented 4 years ago

Thanks for the bug report. I have a hard time deciphering the code, especially the \myMacro part. Can you try to make a minimal working example of the issue, that is to remove all elements from the example that does not contribute directly to the issue. https://tex.meta.stackexchange.com/questions/228/ive-just-been-asked-to-write-a-minimal-working-example-mwe-what-is-that

ghost commented 4 years ago

Can you try to make a minimal working example of the issue

It is already smaller than what egreg produced. I'm not into LaTeX3, but I'll undertake one more attempt:

\documentclass{article}
\usepackage{unicode-math}
\usepackage{todonotes}
\ExplSyntaxOn
\NewDocumentCommand{\myMacro}{m}{
\tl_set:Nn \l_tmpa_tl { #1 }
\regex_replace_all:NnN
\c_justaman_mymacro_greek_regex % search
{ \c{symit}\cB\{\1\cE\} } % replace
\l_tmpa_tl % token list to massage
\mathit{\tl_use:N \l_tmpa_tl}
}
\regex_const:Nn \c_justaman_mymacro_greek_regex
{% one or more Greek letters; fill up
([\c{alpha}]+)
}
\ExplSyntaxOff
\begin{document}
\listoftodos
\clearpage
\noindent\(\myMacro{\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\alpha}\)
\todo[inline]{\(\myMacro{\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\alpha}\)}
\end{document}

produces

p2

on the second page, as expected, but

p1

on the first page, where 𝛼s are missing.

You asked me to simplify the expl3 code. That's where I find myself in special difficulty: I know very little expl3.

u-fischer commented 2 weeks ago

That has nothing to do with a todonotes bug. Your alpha would also disappear in the table of contents if you used it e.g. in a section heading as it expands when written into a list. You would have to protect it:

\todo[inline]{\(\myMacro{\protect\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\protect\alpha}\)}