sasozivanovic / memoize

A cross-format package for externalization of graphics and memoization of compilation results in general
LaTeX Project Public License v1.3c
18 stars 3 forks source link

Memoize perpetually creates memos in landscape environment if pdflscape is used #25

Open cfr42 opened 5 months ago

cfr42 commented 5 months ago

Compiled with pdfTeX, the following code reports

Package memoize Warning: The compilation produced 1 new extern on input line 11
52.

on every compilation and, indeed, an additional page with the memoized picture is perpetually present in the PDF regardless of how many times the source is compiled.

\documentclass {article}
\usepackage{memoize}
\mmzset{prefix=memos/}
\usepackage{tikz}
\usepackage{pdflscape}
\usepackage{kantlipsum}
\begin{document}
\begin{landscape}
  \begin{tikzpicture}[baseline=(n.center)] \node (n) [rotate=90, scale=9, opacity=0.15, black, inner sep=1pt] {PRELIMINARY};\end{tikzpicture}%
\kant[11]
\end{landscape}
\end{document}

.mmz:

\mmzPrefix {memos/}
\mmzUsedCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD.memo}
\mmzUsedCCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD.memo}
\mmzNewCCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{1}{224.0398pt}{816.29105pt}
\endinput

memos/

0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo  0FE7150AB04FD73095EA399A0F6B28BD.memo

.mmz.log:

\PackageInfo{memoize (perl-based extraction)}{Extracting new externs listed in 'prawf.mmz' from 'prawf.pdf' using Perl modulePDF::API2}
\PackageWarning{memoize (perl-based extraction)}{\space\space I refuse to extract page 1 from prawf.pdf, because its size (816.28965pt x 224.037pt) is not what I expected (224.0398pt x 816.29105pt)}
\PackageInfo{memoize (perl-based extraction)}{Done}
\endinput

Note that there is no problem if lscape is used rather than pdflscape. This surprised me because I thought pdflscape was primarily concerned with instructing the PDF viewer rather than changing the PDF.

I don't know whether this is evidence of memoize's security features or a bug, but I'm also not sure what the solution would be. I didn't try this, but my first thought was to capture the landscape environment, but that won't work in the original case which arose from a question in which the picture was stamped as a watermark over the regular page content by inclusion in the shipout box. In that case, landscape might cover several pages, so it wouldn't work to capture everything as an image and I imagine that would not cooperate well with the shipout hooks either.

For example,

\documentclass {article}
\usepackage{memoize}
\mmzset{prefix=memos/}
\usepackage{tikz}
\usepackage{pdflscape}
\usepackage{kantlipsum}
\begin{document}
\begin{landscape}
  \AddToHook{shipout/foreground}{%
    \put (.5\paperwidth,-\paperheight){%
      \begin{tikzpicture}[] \node (n) [rotate=90, scale=9, opacity=0.15, black, inner sep=1pt] {PRELIMINARY};\end{tikzpicture}%
    }%
  }%
\kant[1-10]
\end{landscape}
\end{document}

Code arises from https://tex.stackexchange.com/a/719506/. (I would link the question but it has a rather problematic preamble.)

sasozivanovic commented 5 months ago

Sorry, I'm a bit swamped here, but I'll try to look into it asap.

This surprised me because I thought pdflscape was primarily concerned with instructing the PDF viewer rather than changing the PDF.

If this is the case, I'm not surprised: Memoize stores the PDF page size. I had no idea that the PDF viewer can be instructed otherwise.

cfr42 commented 5 months ago

Sorry, I'm a bit swamped here, but I'll try to look into it asap.

Sure. Take your time.

This surprised me because I thought pdflscape was primarily concerned with instructing the PDF viewer rather than changing the PDF.

If this is the case, I'm not surprised: Memoize stores the PDF page size. I had no idea that the PDF viewer can be instructed otherwise.

Sorry. I'm trying to reconstruct what surprised me about the difference between the result of using lscape versus pdflscape ....

TeX SE refs on pdflscape/lscape

Semi-random selection:

sasozivanovic commented 1 month ago

I finally managed to look into this. The issue was that the extern page was shipped out with the rotation introduced by landscape environment.

When it comes to how to switch off the rotation, I'm somewhat in the dark, in the sense that I'm not sure that my solution conforms to the "standards". Apparently, there's no issue when LaTeX's new PDF management is in effect (\DocumentMetadata{}) at the very top of the file; in other cases, I have simply called \pdfpageattr{/Rotate 0}, and it seems to work with the limited amount of testing I did (mostly on LaTeX, but also on plain TeX).

Please try it out and report. The 1.4.0-wip release now contains all the newest commits.

cfr42 commented 4 weeks ago

Please try it out and report. The 1.4.0-wip release now contains all the newest commits.

I realise I could download the .zip, but I've been trying to learn git, so I tried that instead, but make fails with

------------
Run number 1 of rule 'lualatex'
------------
------------
Running 'lualatex  -recorder  "memoize-code.tex"'
------------
This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)
 restricted system commands enabled.
(./memoize-code.tex
LaTeX2e <2024-06-01> patch level 2
L3 programming layer <2024-09-10>
 (/usr/local/texlive/2024/texmf-dist/tex/latex/base/ltxdoc.cls
Document Class: ltxdoc 2024/02/08 v2.1j Standard LaTeX documentation class
*************************************
* Local config file ltxdoc.cfg used
*************************************
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/ltxdoc.cfg)
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/02/08 v1.4n Standard LaTeX document class
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/size11.clo))
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/doc.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/tools/multicol.sty)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/geometry/geometry.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifvtex.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/iftex.sty))
(/home/cfrees/texmf/tex/latex/config/geometry.cfg
(/usr/local/texlive/2024/texmf-dist/tex/latex/svn-prov/svn-prov.sty)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/memoize/nomemoize.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfil
tered.code.tex))) (/home/cfrees/texmf/tex/latex/config/memoize.cfg))
(/usr/local/texlive/2024/texmf-dist/tex/latex/hypdoc/hypdoc.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/atveryend-ltx.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hyperref.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pdfescape/pdfescape.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/infwarerr/infwarerr.sty)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/hycolor/hycolor.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/refcount/refcount.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/gettitlestring/gettitlestring.s
ty (/usr/local/texlive/2024/texmf-dist/tex/latex/kvoptions/kvoptions.sty)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/stringenc/stringenc.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/pd1enc.def)
(/usr/local/texlive/2024/texmf-dist/tex/generic/intcalc/intcalc.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/puenc.def)
(/usr/local/texlive/2024/texmf-dist/tex/latex/url/url.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/bitset/bitset.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty))
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/atbegshi-ltx.sty))
(/usr/local/texlive/2024/texmf-dist/tex/latex/hyperref/hluatex.def
(/usr/local/texlive/2024/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty

(/usr/local/texlive/2024/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
)))) (./memoize-code.sty (./memoize-doc-common.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/enumitem/enumitem.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
x)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
) (/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/pgf.revision.tex)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphicx.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/graphics.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/trig.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-def/luatex.def)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.d
ef
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p
df.def)))
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.
code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.
code.tex)) (/usr/local/texlive/2024/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics-cfg/color.cfg)
(/usr/local/texlive/2024/texmf-dist/tex/latex/graphics/mathcolor.ltx))
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.
tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic
.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo
nometric.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando
m.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa
rison.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.
code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round
.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.
code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ
erarithmetics.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex)
) (/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfint.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co
de.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst
ruct.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage
.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co
de.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst
ate.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform
ations.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod
e.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c
ode.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce
ssing.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co
de.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod
e.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod
e.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.
code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co
de.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare
ncy.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.
code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.
tex)))
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod
e.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.
tex)
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
-0-65.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
-1-18.sty))
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/pgf/math/pgfmath.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex))

(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.cod
e.tex
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothan
dlers.code.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.cod
e.tex)
(/usr/local/texlive/2024/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
s/tikzlibrarytopaths.code.tex)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/tools/verbatim.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/environ/environ.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/trimspaces/trimspaces.sty)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex
Library (tcolorbox): 'tcblistings.code.tex' version '6.4.0'
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstpatch.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/listings.cfg))
(/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.te
x
Library (tcolorbox): 'tcblistingscore.code.tex' version '6.4.0'
(/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex
Library (tcolorbox): 'tcbprocessing.code.tex' version '6.4.0'
))) (/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex
Library (tcolorbox): 'tcbhooks.code.tex' version '6.4.0'
) (/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex
Library (tcolorbox): 'tcbraster.code.tex' version '6.4.0'
) (/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
Library (tcolorbox): 'tcbskins.code.tex' version '6.4.0'
(/usr/local/texlive/2024/texmf-dist/tex/latex/tikzfill/tikzfill.image.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/tikzfill/tikzfill-common.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/tikzfill/tikzlibraryfill.image.co
de.tex))
(/usr/local/texlive/2024/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex
Library (tcolorbox): 'tcbskinsjigsaw.code.tex' version '6.4.0'
)) (/usr/local/texlive/2024/texmf-dist/tex/generic/xstring/xstring.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/xstring/xstring.tex))
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/microtype.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/microtype-luatex.def)
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/microtype.cfg))
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang1.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang2.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang3.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang1.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang2.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang3.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang1.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang2.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstlang3.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/listings/lstmisc.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/marvosym/marvosym.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/fontawesome/fontawesome.sty
(/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifxetex.sty)
(/usr/local/texlive/2024/texmf-dist/tex/generic/iftex/ifluatex.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/fontawesome/fontawesomesymbols-ge
neric.tex) (/usr/local/texlive/2024/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-luatex.def)))
 (/usr/local/texlive/2024/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/fontenc.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
(/usr/local/texlive/2024/texmf-dist/tex/latex/fontawesome/fontawesomesymbols-xe
luatex.tex)) (/usr/local/texlive/2024/texmf-dist/tex/generic/hologo/hologo.sty)
) (/usr/local/texlive/2024/texmf-dist/tex/latex/advice/advice.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/collargs/collargs.sty)))This is makeindex, version 2.17 [TeX Live 2024] (kpathsea + Thai support).
Scanning style file /usr/local/texlive/2024/texmf-dist/makeindex/latex/gind.ist.............done (13 attributes redefined, 3 ignored).
Scanning input file memoize-code.idx.....done (1525 entries accepted, 1 rejected).
Sorting entries...............done (17048 comparisons).
Generating output file memoize-code.ind.....done (1795 lines written, 96 warnings).
Output written in memoize-code.ind.
Transcript written in memoize-code.ilg.

Writing index file memoize-code.idx
(/usr/local/texlive/2024/texmf-dist/tex/latex/collargs/collargs.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/advice/advice.sty)
(/usr/local/texlive/2024/texmf-dist/tex/latex/memoize/memoize.sty)
(./memoize-code.aux)
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/ts1cmr.fd)
*geometry* driver: auto-detecting
*geometry* detected driver: luatex
(./memoize-code.out) (./memoize-code.out) (./memoize-code.hd)
(/usr/local/texlive/2024/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/local/texlive/2024/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg
) (/usr/local/texlive/2024/texmf-dist/tex/latex/marvosym/umvs.fd)
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/mt-mvs.cfg)
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/mt-TU-empty.cfg)
(../memoize.dtx
(/usr/local/texlive/2024/texmf-dist/tex/latex/microtype/mt-cmr.cfg)
(../memoize.ins) (../advice.ins) (../collargs.ins)
[1{/usr/local/texlive/2024/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./memoize-code.toc)
[2]
[3]
[4]
[5]
[6]
[7
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[8
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[9
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[10
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[11
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[12]
[13]
[14
warning  (pdf backend): pop empty color page stack 0
]
[15
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
Overfull \hbox (16.89893pt too wide) in paragraph at lines 1099--1103
\TU/lmr/m/n/10.95 Com-pute $\OMS/cmsy/m/n/10.95 h$\TU/lmr/m/it/10.95 code md5su
m$\OMS/cmsy/m/n/10.95 i$ \TU/lmr/m/n/10.95 off of salted the source code, and g
lob-ally store it into []\TU/lmtt/m/n/10.95 \mmz@code@mdfivesum

[16
warning  (pdf backend): pop empty color page stack 0
]
[17
warning  (pdf backend): pop empty color page stack 0
]
[18
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[19
warning  (pdf backend): pop empty color page stack 0
]
[20
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[21
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[22
warning  (pdf backend): pop empty color page stack 0
]
[23
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
[24
warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0

warning  (pdf backend): pop empty color page stack 0
]
! You can't use `macro parameter character #' in horizontal mode.
<argument> GitHub issue ##
               27
l.1716 %     issue #27}

which probably means I've screwed up somewhere ....

sasozivanovic commented 4 weeks ago

Bad news is I cannot reproduce your error. Good news is that this error occurs when compiling the code listing, which you don't have to do. To produce .sty files, you only need to run make runtimes. (And then copy memoize.sty, which is the only runtime which changed recently, to the testing directory.)

I'll of course still try to reproduce your error.

cfr42 commented 4 weeks ago

Bad news is I cannot reproduce your error.

I stress the trying part of 'trying to learn git'. If I just try to clone and checkout the tag directly

git clone --branch memoize-1.4.0-wip git@github.com:sasozivanovic/memoize.git memoize-1.4.0-wip

(I am not sure what I did before.) Then make ends with,

! Package Listings Error: File `examples/titlepage.tex.c1.listing(.tex)' not fo
und.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name:

However, I do get the .sty etc. So I tested that with the examples I gave above, but I get 1 new extern with the first and 4 new externs with the second on every compilation.

For the first example:

prawf-2.log prawf-2.mmz.log

.mmz contains

\mmzPrefix {memos/}
\mmzUsedCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD.memo}
\mmzUsedCCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD.memo}
\mmzNewCCMemo {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/0FE7150AB04FD73095EA399A0F6B28BD-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{1}{224.0398pt}{816.29105pt}
\endinput

For the second:

prawf-2.mmz.log prawf-2.log

.mmz contains

\mmzPrefix {memos/}
\mmzUsedCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzUsedCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzNewCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{1}{224.0398pt}{816.29105pt}
\mmzUsedCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzUsedCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzNewCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{3}{224.0398pt}{816.29105pt}
\mmzUsedCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzUsedCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzNewCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{5}{224.0398pt}{816.29105pt}
\mmzUsedCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzUsedCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewCMemo {memos/98F269C78FCB933D3C4BCCB79B723058.memo}
\mmzNewCCMemo {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.memo}
\mmzNewExtern {memos/98F269C78FCB933D3C4BCCB79B723058-E778DCCCB8AAB0BBD3F6CFEEFD2421F8.pdf}{7}{224.0398pt}{816.29105pt}
\endinput

Do I need to update something beyond memoize.sty? Or am I doing something really stupid? (Or both?)

sasozivanovic commented 3 weeks ago

I believe what happened here is that by writing

git clone --branch memoize-1.4.0-wip git@github.com:sasozivanovic/memoize.git memoize-1.4.0-wip

you checked out the state of the package on June 8. The fault is mine, as I forgot to update tag memoize-1.4.0-wip when replacing the .zip file in the release memoize-1.4.0-wip. (To top if off, I also forgot to update the publication date in the .dtx/.sty ...)

I believe things should work, i.e. you will get the latest version containing the page orientation fix, if you issue

git clone git@github.com:sasozivanovic/memoize.git

or (if you want to clone into a directory other than memoize)

git clone git@github.com:sasozivanovic/memoize.git some-directory

Regarding the error you got by running make (! Package Listings Error: File 'examples/titlepage.tex.c1.listing(.tex)' not fo und.). This error occurs when compiling the documentation, in particular, when trying to include an example. I have been working on the issue, simplifying (and fixing!) the creation of examples. In the new system, all example files will be created before compiling the documentation, so that (in the spirit of your suggestion from #23) compiling the docs with --shell-escape will be unnecessary. I have not yet pushed these changes to GitHub, as I still have to iron out a couple of kinks — but I'm getting there.

cfr42 commented 3 weeks ago

It now builds if you tweak the Makefile so it knows how to turn .edtx into .dtx when compiling the docs:

diff --git a/Makefile b/Makefile
index 7250e6b..ae7f5fc 100644
--- a/Makefile
+++ b/Makefile
@@ -41,6 +41,7 @@ MAKEFILE = Makefile Makefile.package Makefile.runtimes Makefile.advice Makefile.
 LICENCE = LICENCE

 PACKAGES.edtx = $(PACKAGES:%=%.edtx)
+PACKAGES.dtx = $(PACKAGES:%=%.dtx)
 PACKAGES.ins = $(PACKAGES:%=%.ins)

 codedoc-source = memoize-code.tex \
@@ -91,14 +92,15 @@ ctan/$(PACKAGE).zip:
                | sed -e '/^% Local Variables:/Q' > $@

 doc/memoize-code.pdf: $(codedoc-source) \
-                      $(PACKAGES.edtx) $(PACKAGES.ins) $(SCRIPTS:%=%.dtx)
+                      $(PACKAGES.edtx) $(PACKAGES.dtx) $(PACKAGES.ins) $(SCRIPTS:%=%.dtx)

-doc/memoize.pdf: $(manual-source) $(examples-src) $(PACKAGES.edtx)
+doc/memoize.pdf: $(manual-source) $(examples-src) $(PACKAGES.edtx) $(PACKAGES.dtx)

 %.pdf: %.tex
        latexmk -cd -lualatex -shell-escape -bibtex- $(LATEXMK) $<  && touch $@

-
+%.dtx: %.edtx
+       edtx2dtx $< > $@

 # Maintenance

[This presumably isn't how you want to do it.]

cfr42 commented 3 weeks ago

The examples above work for me with pdfTeX or LuaTeX, but not XeTeX.

prawf-1.log prawf-0.log