1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
% $Id: test-def.tex 63198 2022-05-01 15:18:17Z karl $
% This file is public domain.
\documentclass{report}
\newcommand{\defaultleftmargin}{0.25in}
%\setlength{\oddsidemargin}{\defaultleftmargin}
%\providecommand{\defaultmargin}{0.25in}\def\defx{\defy}
% based on report:
% Date: Mon, 25 Apr 2022 15:37:27 -0600
% From: Michael Clark
%
\def\ibx{\textit{#1}} % \def with nested braces in rhs
\newcommand\ibx{\textit{#1}} % \newcommand\foo
\newcommand{\ibx}{\textit{#1}} % \newcommand{\foo}
\newcommand{\ibx}{\textbf{\textit{#1}}} % more nesting
% *-form
\newcommand*{\ibxstar}{\textit{#1}}
% arg count
\newcommand{\ibx}[1]{\textit{#1}}
% optarg default
\newcommand{\ibx}[1][dflt]{\textit{#1}}
\begin{document}
\end{document}
% See Makefile.am for rebuild + test recipe.
% emacs-page
% [https://tug.org/pipermail/tex-live/2019-January/043083.html]
%
% Date: Thu, 24 Jan 2019 19:11:18 -0800
% From: Zayd Hammoudeh <hammoudeh@gmail.com>
% To: <tex-live@tug.org>
% Subject: [tex-live] Possible lacheck Bug Report
%
% [...]
%
% In the simple LaTeX file:
% \documentclass{report}
%
% \newcommand{\defaultleftmargin}{0.25in}
%
% \begin{document}
% \end{document}
%
% I get the following errors with lacheck:
% "hw01.tex", line 5: <- unmatched "end of file hw01.tex"
% "hw01.tex", line 2: -> unmatched "{"
%
% This is reported by Vim's syntastic running lacheck ver. $Id:
% lacheck.lex,v 1.26 1998/03/07 07:46:45 abraham Exp $ on MacOS High
% Sierra. The issue only seems to arise when \newcommand is followed by
% {\def*} (where * is zero or more other characters). Removal of the curly
% brackets around \def* or any term other than def causes the issue to go away.
%
% [...]
%
% Edit: The issue appears to not be limited to newcommand. I get the same
% error for the line:
% \setlength{\oddsidemargin}{\defaultleftmargin}
% emacs-page
% https://tug.org/pipermail/tex-live/2022-April/048096.html
% Date: Mon, 25 Apr 2022 15:37:27 -0600
% From: Michael Clark <clark.michael.c@gmail.com>
% To: <tex-live@tug.org>
% Subject: lacheck is confused when curly brackets are inside a \newcommand
%
% Example latex file (foo.tex):
%
% \newcommand{\boldx}[1]{{\bf #1}}
% \newcommand{\ibx}[1]{\textbf{\textit{#1}}}
%
% lacheck output:
%
% "foo.tex", line 1: <- unmatched "}"
% "foo.tex", line 1: -> unmatched "beginning of file foo.tex"
% "foo.tex", line 2: <- unmatched "}"
% "foo.tex", line 1: -> unmatched "beginning of file foo.tex"
%
% I pulled the example commands from
% https://www.physicsread.com/latex-bold/ showing two useful cases. One,
% using a command inside of a newcommand, and the other creates a group
% to isolate the scope of the command to the included text.
%
% Replacing \newcommand with \newcommand* reports no error as expected.
% If an error is expected behavior for \newcommand, it would be nice if
% the error message were more clear, as the brackets are correctly
% matched.
%
% Thank you for maintaining this tool. I'd need to devote longer than I
% have to figure out where to go from line 391 of lacheck.l
% (https://tug.org/svn/texlive/trunk/Build/source/utils/lacheck/lacheck.l?view=markup#l391)
|