T-F-S / tcolorbox

A LaTeX package to create highly customizable colored boxes.
http://www.ctan.org/pkg/tcolorbox
LaTeX Project Public License v1.3c
213 stars 15 forks source link

Related to Issue #267: Perpetual Undefined Control Sequences #268

Open sgolde13 opened 5 months ago

sgolde13 commented 5 months ago

Source: https://ctan.org/pkg/tcolorbox Version: 6.2.0 2024-01-10

Rendering a LaTeX file to PDF via the $ xelatex filename.tex method and Jupyter Notebook is interrupted by what seems to be a series of undefined control sequences in the styles file tcolorbox.sty. I posted the question to StackExchange about this issue with one error for the example. A full copy of the error is attached for your reference here: Jupiter Notebook Enviroment Test Document.log.

When the xelatex terminal command produces a PDF, it includes an extraneous leading page that lists two functions in the tcolorbox package: tcboxverb and tcbsidebyside. On this page, it lists these two followed by "-No Value-", then it prints out what it could of my tex document.

Any guidances on fixes for this issue would be greatly appreciated.

muzimuzhi commented 5 months ago

Does the workaround in #267 work for you? That is, either add \cs_generate_variant:Nn \tl_set:Nn { Ne } or update both latex and l3kernel.

BTW, according to the attached log file, you have

LaTeX2e <2022-11-01> patch level 1
L3 programming layer <2023-02-22>
tcolorbox 6.2.0

installed.

I think updating latex and l3kernel is a better solution for you.

sgolde13 commented 5 months ago

Thank you for the quick reply! I thought that I had updated both of those with a $ tlmgr update --self --all. So far as I can tell, the l3kernel is current, but I see what you mean about LaTeX2e. I'm sorry to ask such a novice question, but how else do you update LaTeX2e than with the self update or reinstalling MacTeX? I've also tried updating through the TeX Live Utility, and the online help I've found do not have other suggestions.

I should mention that I also tried the update code you suggested under the #267 issue (copied below). Completing these did not change what LaTeX2e version the XeLaTeX is using:

# check all updates
tlmgr update --list
# update latex2e kernel and its dependencies
sudo tlmgr update --self latex l3kernel l3backend

If I end up needing to resort to adding that code snippet, would I add that to the tcolorbox.sty file before the following line?

l.2315 \cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
  {
    \tl_set:Nn #1 { #2 }
    \tl_trim_spaces:N #1
    \tl_set:Ne #1 { \exp_last_unbraced:NV \cs_to_str:N #1 }
  }

Thank you for your help.

muzimuzhi commented 5 months ago

So far as I can tell, the l3kernel is current, but I see what you mean about LaTeX2e.

Hmm the latest l3kernel is 2024-01-22, but from the log you have 2023-02-22 instead.

(With the l3kernel 2024-01-22 installed, one should see revision: 69537 in standard output of tlmgr info l3kernel.)

Normally sudo tlmgr update --all --self should work for MacTeX users, except for TeX Live's yearly update. Perhaps you have multiple latex distributions installed, or some non-system wide formats are generated and then never updated.

I suggest to first check if the problem reproduces when using latex directly (with a dummy tex file loading tcolorbox), without the Jupiter layer. If it reproduces then run kpsewhich -a --engine=xetex xelatex.fmt to list all available xelatex.fmt files. Typical expected output is a single entry

/usr/local/texlive/2023/texmf-var/web2c/xetex/xelatex.fmt

People on the TeX-SX site probably know better how to analyze and solve these types of problems.

sgolde13 commented 5 months ago

I was having a similar issue before with the TinyTex R package, which was blocking the TeX Live 2023 tlmgr from using a current access key to verify repositories. You are probably right that my issue is a much deeper TeX distribution problem. Thank you again for all of your help and for patiently pointing out those inconsistencies in the error document.

sgolde13 commented 5 months ago

Hi @muzimuzhi. If I need to resort to adding your code snippet, would I add it to the tcolorbox.sty file before the following line?

l.2315 \cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
  {
    \tl_set:Nn #1 { #2 }
    \tl_trim_spaces:N #1
    \tl_set:Ne #1 { \exp_last_unbraced:NV \cs_to_str:N #1 }

Thank you, Shelby

muzimuzhi commented 5 months ago

would I add it to the tcolorbox.sty file before the following line?

Normal suggestion is to add it to the preamble of your tex document, before tcolorbox is loaded. This is also what Joseph Wright's answer on TeX-SX suggested.

If that's impossible or extremely hard to do this setting in Jupiter Notebook, last resort is to alter (or make a modified copy of in TEXMFLOCAL) file installed by tlmgr. In this way, just put it at the very beginning of tcolorbox.sty.

BTW, you still found no way to use latest l3kernel?

sgolde13 commented 5 months ago

I just had an opportunity to revisit the issue, and I was able to find a breakthrough solution to my problem! I isolated the l3 layer issue to the l3kernel package, as was described here.

tlmgr remove --force l3kernel
% trying to compile the PDF using xelatex gave the same "! LaTeX Error: File 'expl3.sty' not found."

tlmgr install l3kernel

Through Keks Dose's comment to that StackExchange post I found another post called Mismatched LaTeX support files detected. Running fmtutil-user --all ended up resolving whatever issue I was experience.

I detailed my error troubleshooting process more in my StackExchange post, in case someone can figure out what that solution means about what the issue was. Based on tug.org, fmtutil rebuilds and manages TeX fmts and Metafont bases.

Thank you for all of your help and for following my issue through even though is was no related to your package directly!

Shelby