Skip to content

Instantly share code, notes, and snippets.

@kmuto
Created December 16, 2019 00:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmuto/0da32b5bc6d0d7f1acd82fd0d6e2c0f4 to your computer and use it in GitHub Desktop.
Save kmuto/0da32b5bc6d0d7f1acd82fd0d6e2c0f4 to your computer and use it in GitHub Desktop.
breakallコードがhyperrefの作用箇所でおかしくなってしまう
%!ptex2pdf -l -u break.tex
\documentclass[uplatex]{jsarticle}
% hyperref有効にすると
% ! TeX capacity exceeded, sorry [input stack size=5000].
% <to be read again>
% \HyPsd@@LetCommand
% l.61 \section{\reviewcode{Hello}}
% になってしまう (https://github.com/kmuto/review/issues/1432)
\usepackage[dvipdfmx]{hyperref}
\makeatletter
% allow break line in tt
% contributed by @zr_tex8r
\newif\ifreview@ba@break
\def\review@ba@end{\review@ba@end@}
\DeclareRobustCommand{\reviewbreakall}[1]{%
\begingroup
\review@ba@breakfalse
\review@break@all@a#1\review@ba@end
\endgroup
}
\def\review@break@all@a{%
\futurelet\review@ba@tok\review@break@all@b
}
\def\review@break@all@b{%
\ifx\review@ba@tok\review@ba@end
\let\next\@gobble
\else\ifx\review@ba@tok\@sptoken
\let\next\review@break@all@c
\else\ifx\review@ba@tok~%
\let\next\review@break@all@d
\else\ifx\review@ba@tok\bgroup
\let\next\review@break@all@e
\else
\let\next\review@break@all@f
\fi\fi\fi\fi
\next
}
\expandafter\def\expandafter\review@break@all@c\space{%
\space
\review@ba@breakfalse
\review@break@all@a
}
\def\review@break@all@d#1{%
\review@break@all@f{\mbox{\space}}%
}
\def\review@break@all@e#1{%
\review@break@all@f{{#1}}%
}
\def\review@break@all@f#1{%
\ifreview@ba@break
\hskip0pt plus 0.02em\relax
\fi
#1%
\review@ba@breaktrue
\review@break@all@a
}
\DeclareRobustCommand{\reviewcode}[1]{{\ttfamily\reviewbreakall{#1}}}
\begin{document}
\section{\reviewcode{Hello}}
\end{document}
@kmuto
Copy link
Author

kmuto commented Dec 16, 2019

\reviewcode{Hello world} のようにしないと空白が保持されることがmustだとわかりにくいか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment