rpgtex / DND-5e-LaTeX-Template

LaTeX package to typeset material for the fifth edition of the "world's greatest roleplaying game".
MIT License
1.43k stars 307 forks source link

Undefined control sequence. \regex_const:Nn #239

Closed matteocorti closed 4 years ago

matteocorti commented 4 years ago

Using the latest commit I get

(/compile/lib/compat.sty) (/compile/lib/dndutility.sty
! Undefined control sequence.
l.7 \regex_const:Nn
                  \c__valid_dice_regex { \A\s*(\d+)(?:[dD](\d+)\s*(?:([+\-])...
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

at line 7 of dndutility.sty

\regex_const:Nn \c__valid_dice_regex { \A\s*(\d+)(?:[dD](\d+)\s*(?:([+\-])\s*(\d+))?)?\s*\Z }
BrianCriswell commented 4 years ago

It looks like you might be missing \regex_const:Nn. Which LaTeX package (and version/year) are you using? Do you have all the packages listed in https://github.com/rpgtex/DND-5e-LaTeX-Template/blob/master/packages.txt?

matteocorti commented 4 years ago

I am using Overleaf and I tried with LuaLaTeX, PdfLaTeX and XeLaTeX. It worked until yesterday afternoon. So I don't thing that a package was removed from Overleaf but rather that I messed up something in the project.

Which package should provide \regex_const:Nn and where is it included? I am not really able to trace the problem.

BrianCriswell commented 4 years ago

It is in one of the l3 packages in the list linked above. Overleaf support is difficult because they update their LaTeX packages infrequently, and LaTeX3 development is ongoing, so parts of it move around, names are changed, etc.

Because of the popularity of Overleaf, I hope to get a compatibility fix in to the next full release. In the meantime, I believe you can add the current LaTeX3 packages to your Overleaf project to have them used instead of the versions Overleaf is storing.

matteocorti commented 4 years ago

Thanks for the hint. Compiling it locally on my machine I cannot reproduce the problem. I didn't think about the packages on Overleaf being "broken".

matteocorti commented 4 years ago

Just for the record if someone has the same problem:

BrianCriswell commented 4 years ago

Thanks for figuring this out! This is going in the readme.

matteocorti commented 4 years ago

Overleaf support just updated the set of packages my project was using. It now works without workaround. I would document it anyway just in case (it can be useful to override any package on Overleaf)

sibomots commented 4 years ago

A couple of notes on this issue.

First a very clear declaration: This is a very cool package and I thank the authors for putting it together. It is a lot of work and I appreciate it very much. I have no bone to pick about the package. I just offer some notes for those who are trying to use it.

This is all as-of yesterday November 27, 2019.

The issue shouldn't be closed yet until there's something concrete listed about how to resolve the use of the macros in L3 given the different ways there are to install a LaTeX environment.

The patch (if any, I didn't find one) to the documentation didn't quite capture the fix.
The subtleties of the problem are not quite captured.

The fix isn't so much in this contribution (this new document class), but in the way the underlying system is assumed to behave. The contributor of this new document class is being affected by the outcome of an update to tex-live which is broken (depending on how you define broken).

Everything below is to be done at your own risk. I don't make any warranty that your system will survive these changes. But, if you have been using a regular Linux distribution, and made changes to your LaTeX environment per the system tools provided (apt-get, dpkg, etc..) then you should be OK. Still, backup your work.

  1. So, suppose you had followed the README of this document class (the README that described how to install and configure the Dnd template here), you might have done something like:
    $  apt-get install texlive-full

I did so because I wasn't sure if I had all the packages and I was lazy. So I just refreshed whatever I had with whatever the installer thinks I need. Par for course.

This is the first problem. Don't update or install LaTeX like this. Being old and lazy I would have first recommended this, since this is a far better approach than the really old way we used to install LaTeX system (remember WEB compiler back in the 80s? anyone?)... But with convenience comes some overlooked issues and the preparation and configuration of the L3 facet of the tex-live installation is suffering.

I wiped clean (apt-get purge PACKAGE) all preexisting *TeX related packages. Scorched earth. Nuke from orbit, only way to be sure, etc..

  1. Use the installer as so: Just follow these instructions. You'll wind up with an installation of so many packages and the LaTeX suite that would gag a maggot, but it'll be complete and correct, as much as that means. It took my 8 core Xeon on the OVH network about 2 hours to complete.

  2. Then, now, you can build the example that is provided by this package.

  3. The README for this package covers how to build the example in detail. It is correct. There's one small edit I would recommend for those who are borrowing the Makefile. If it's your first time with this package (or with LaTeX in general), I would omit the flag: --interaction=nonstopmode The reason why is I personally want to see the process fail and stop when there is an error. When using that flag, the process will continue and what is an actual error may go unresolved -- unless you like reading log files from LaTeX -- but you don't because you're using latexmk.. Right? So, omit the flag, run make, and then edit to suit as you stumble through the usages of this package. The cool kids set the environment variable EDITOR prior to running make and when they hit an error, they just enter E and the editor will fire up and they can go right to the problem and fix it. Anyway I digress.

This is what I had to do in order to get this very cool package to work. In Summary:

  1. Avoid apt-get to install LaTeX, etc..
  2. Use the tex-live installer mentioned above.
  3. Learn this package by failing-fast and disable the flag to gloss over errors. Hit the errors. Learn from them.

Good luck and happy adventure writing.

BrianCriswell commented 4 years ago

Thanks for your input, and I will update the installation instructions when I have the time.