Detect begin… … end… mismatch, or ending what you did not beginWhat does this error mean?: begin document ended by end proofError with beginequation and endequationCompiler Error when Creating a Macro/EnvironmentProblem grouping environmentsAbridging begin … endcommand without ending at the end of the line?Putting custom environment (using environ package) start and ends in commandsAlias for an lstlisting environmentSorry, but pdflatex did not succeedbeginmyenv ended by enddocument

Accidentally leaked the solution to an assignment, what to do now? (I'm the prof)

Why is an old chain unsafe?

Why has Russell's definition of numbers using equivalence classes been finally abandoned? ( If it has actually been abandoned).

When blogging recipes, how can I support both readers who want the narrative/journey and ones who want the printer-friendly recipe?

Infinite past with a beginning?

Why Is Death Allowed In the Matrix?

Simulate Bitwise Cyclic Tag

What typically incentivizes a professor to change jobs to a lower ranking university?

Do airline pilots ever risk not hearing communication directed to them specifically, from traffic controllers?

What would happen to a modern skyscraper if it rains micro blackholes?

A Journey Through Space and Time

What do you call a Matrix-like slowdown and camera movement effect?

XeLaTeX and pdfLaTeX ignore hyphenation

"which" command doesn't work / path of Safari?

Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?

Circuitry of TV splitters

Chess with symmetric move-square

How can I fix this gap between bookcases I made?

Why doesn't Newton's third law mean a person bounces back to where they started when they hit the ground?

I’m planning on buying a laser printer but concerned about the life cycle of toner in the machine

Why are 150k or 200k jobs considered good when there are 300k+ births a month?

Is there a familial term for apples and pears?

I probably found a bug with the sudo apt install function

Is there really no realistic way for a skeleton monster to move around without magic?



Detect begin… … end… mismatch, or ending what you did not begin


What does this error mean?: begin document ended by end proofError with beginequation and endequationCompiler Error when Creating a Macro/EnvironmentProblem grouping environmentsAbridging begin … endcommand without ending at the end of the line?Putting custom environment (using environ package) start and ends in commandsAlias for an lstlisting environmentSorry, but pdflatex did not succeedbeginmyenv ended by enddocument













3















While testing some of my new environments I made a mistake like this:



...
begindocument
...
beginA
...
endA
...
beginB
...
endA
...
enddocument


LaTeX complained that B did not end when document ended. And it talks about the line where enddocument is, and the line where beginB was, but it did not talk about the mismatching endA (the location of the actual error).



Why can't LaTeX detect such? I know that newenvironment actually defines two commands, one for beginning and one for ending, but isn't it possible to detect the case where something is to be ended that never had begun?



Update 1:



The example I had given was (to my best knowledge) the essence of the problem, and I contructed it in the head as the original file has thousands of lines and many figures, etc. (too much to present here, and also written by a TeX analphabet, so you will tear your hair out to see my struggles...). But people do not believe what I wrote. So I made a small test file from my big file, showing the problem:



Here's the essential part of the input:



begingfxTableCap[p]lrCaptionlabel2%
gfxCap0.4Platzhalter.pdfCaption 2A
&
gfxCap0.4Platzhalter.pdfCaption 2B
endgfxTableCapLab


Causing this output (truncated to the essence):



This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex)
restricted write18 enabled.
entering extended mode
(./xxx.tex
LaTeX2e <2017-04-15>


[...]



<Platzhalter.pdf, id=1, 284.52756pt x 227.62204pt> <use Platzhalter.pdf>
<use Platzhalter.pdf> <use Platzhalter.pdf> <use Platzhalter.pdf>

! LaTeX Error: begingfxTableCap on input line 88 ended by enddocument.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.


So it does not say "unexpected endgfxTableCapLab.



In case it's special for the environments I had defined, here's the mess:



documentclass[a4paper,twoside]report
newcommandgtLab
newcommandgtCap
newenvironmentgfxTableCapLab[4][htbp]%
beginfigure[#1]%
begintabular#2%
endtabular%
gtCap%
endfigure%

newenvironmentgfxTableCap[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTableLab[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTable[2][htbp]%
begingfxTableCapLab#2%
%
endgfxTableCapLab
newcommandgLab
newcommandgCap
newcommandgfxCapLab[4]%
beginminipage[t]#1textwidth%
graphic%
gCap%
endminipage

newcommandgfxCap[3]gfxCapLab#1#2#3
begindocument
Some text...
begingfxTableCapLab[p]lrCaptionlabel1%
endgfxTableCapLab
%
Text
begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab

enddocument


For all who do not have a nice placeholder PDF, here's the uuencoded version (I can't attach a PDF as image):



begin 644 Platzhalter.pdf
M)5!$1BTQ+C4*);7MKOL*-"`P(&]B:@H/"`O3&5N9W1H(#4@,"!2"B`@("]&
M:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IXG)5036L"00R]YU?DJ(>-
MDQ7]EHH!4&H[=S$PU*K4G8/6J'07V]VEQ9I*UC"9,)[Y.4EC,ZB8DLBB7+F
M%`5?.CB`&ZBG!YPU#G?OP!0X>_'X8=3<WANL4$A]2"%]%VOKV4#`!1Z0!X4Q
MFZ0H9<G8?UQCAQ(#:8Y?0&M`)`.1:Z4@J4>4?-`+8/]+Y1F7UWW<X.'GR'_K
M71K8ZE>;SSE<8=W!;PGHX>KCV5RI-'5/B-+I!!4.6'I8+:M7-6/*EM831[;
MYO2Y;]IIY2>GU^-T7>9P7V`)9VT07*(*96YD<W1R96%M"F5N9&]B:@HU(#`@
M;V)J"B`@(#(Q.0IE;F1O8FH*,R`P(&]B:@H/`H@("`O17AT1U-T871E(#P
M"B`@("`@("]A,"`/"`O0T$@,2`O8V$@,2`^/@H@("`^/@H@("`O1F]N="`
M/`H@("`@("`O9BTP+3`@-B`P(%(*("`@/CX*/CX*96YD;V)J"C(@,"!O8FH*
M/#P@+U1Y<&4@+U!A9V4@)2`Q"B`@("]087)E;G0@,2`P(%(*("`@+TUE9&EA
M0F]X(%L@,"`P(#(X,RXT-C0U-CD@,C(V+C<W,38U,B!="B`@("]#;VYT96YT
M<R`T(#`@4@H@("`O1W)O=7`@/#P*("`@("`@+U1Y<&4@+T=R;W5P"B`@("`@
M("]3("]4<F%N<W!A<F5N8WD*("`@("`@+TD@=')U90H@("`@("`O0U,@+T1E
M=FEC95)'0@H@("`^/@H@("`O4F5S;W5R8V5S(#,@,"!2"CX^"F5N9&]B:@HW
M(#`@;V)J"CP("],96YG=&@@."`P(%(*("`@+T9I;'1E<B`O1FQA=&5$96-O
M9&4*("`@+TQE;F=T:#$@-3@X.`H^/@IS=')E86T*>)S=.&UT$U=V[[V9T<B6
M;4E&,K:%/2,&V0ZR+2-AL,%8$TL:Y'4",K:"9&(L@PV&?-A&)AO(!V(A&Q`0
MDX3-R2Y)8%O2#0E91H0$D_V(VI[=9GO(ANXFI]W=M'C3M*<GC6N:7=)V$UN]
M;R032)OMG_SJD^;-_7KWW7O???<]"6&$4#Y*(`:)F^_I'_GUS+.C"/'_B1#I
MV7S?F.A[UO<A"'0#7K)E9.L]5]**D(%=X,,M_7N75M^7KT#1K.`'[;T&#_
M`#M]]G:$YHT!;=D0$(HZ=`6``QM&KIG['XQP"0!OTSQNX<W]_/_G#<"^.!
MM]S3?_(>R__-P#J`1='=@R.['YSXR>`U#[R*"_/`>X,)@+8_J4QBY6L[Q
MK'[*G=)Q[[6<8PB`*,50,D?)YWA=WF<MYS"E>QVL-NMON).+L(/ST[Q(7_
M)*??0MF(N@%A-@/N;VH",U'.^6NTP0_.1?-[UD(OE,.;.88;@":X&C@$$]
MLK$L(9=A^%KX'J0WZ64]H]?U"1:79:VES[+'PADM;ULR%H:WR'GFH,7"S^O+
M8_ABY/5.%3>[G!M[1Z>PJW?*W3M:;GJO?&I)`^JE#5N*B&0W2V:[NY+P2ZL`
MMKN7L1^NVO7:KME-;Y#.AUY_L#5]ZM3L(WC?\>97]UY8J=_YC?<WE7#S_9_
M]#,.T^`'QA!;'$K=PGB,RPO990TPI>!BDRH`5U%K!Y-<E<Y<H7#*I?FR`D.
MCW`)CA@Y@2-7.0QT;B*3EFT+'<&U',YDV6GN,C?)@0@&159P`X.UH[1T1U:
M<X%#.`+C]EC3I[G+OUA*8WG^LQ';)Q=@]SH5O1=V;UKU<%59%?!P0)":O(*
M@_E<.4><I1`>;H%U`7$X*A6Y/F^X:4_3>!/3Y$M85ENI'1;K@J#5ZETM,)AI
M*5]Y*0/^RA#K)2"]LZ:DN;.O+QR3Y%NRSC%F*Q&$/EIGI/")4@[Y3;.^5Q
M]8Z:(>93WBGL[!V%H'M<SBF(>J_;73[E=BUIZ'7V.B'W,*JQJ6MQ(L;E]83
M:6$1X:M;&8^[Q&JVE'C<RY9;B["TL)Y42T5,M;N5K,)$6.UE.#G_O14Y[X7
MUO]NP8KU*Y=VMU;I?IC?M/7XO9=^OGBEL;)HH:_*TUY?RN@J`G?NE.[8&U[
MD[:O]S3V6<X==?!-96$7>G;N,)FK/9YS/)=:YP_2,W6ASI99D2OMRWO7+:T
M>Z7XJ'?36&.4Q69W3WLD1M=7R%PEB[E:/`!>7U-$=Y6M*OH8!%34XBW%>XJ
M/%C('&(Q*T*([V8?9)]AS[`L8`7!X9(]):2DH+"$,2EY^G$.([$B9S,L3R7
M*,5&7:C`FX_SXSS0@P-GO>M7L^4&_?2Q?5XIN:[7;V0IY>"&/O:.^H@:C
MT2PU>I9[K!ZKE`L367Q+N.GO'MK?>/^;;WJY4LJ](;":^07^S[^>-],>(U7
MKT-:CBY!B'F-78'RL$%>RQYF9!#!$?)-D*>X/^$)V/?IXH_!W%IZIT6-&
M3Q[0859GT2W2G=*=U[VC^T#'SJ>,>"5>`-FK%<O3R(9;,EB`TT.6KN'`BF
M#?B`9TX&,&G##@,0..&7"W`<L&O-3@-PP8]AM835AL7Q<4#=ABP,B`O5G.
M*0/+&A9I8IK0*Y[6H"9<+%0')PV8((-H"!E&#"ROD0M-EJ".";%&S(?H!J&I
MY:PT?MZG<[1'1MANT#VS36GRPDLCR<;VKY12$*M>1JQO=%NQ7;K$O*MF2>9
MIIGMY`<'F:I#!S_[]2$M;H]!W/X-]K8=W7,1Z6'B1;PA:%#D4`$^49`I(`52
M`DEIZ;(T*;%I"1LEG)"PI'DY;WYP0:F2+L.HS%364#99=K6,TY>5HS*#%16'
M.)-FM,>+J5%3;FKM#KI-1FEY<F*Z%RJ)%6I3;GM0T&.&@L7C595*]T#KT".W
M5[QJ;H@HM;VFO/G"4,PLW?Y[>[Y38.'NV=<Y/N!H8!4WWU_QPWN$NS#]O;
MFJIY-%<G2J%.+$`.=)=<WR-META/Y?9*$F8&H9JWY^795LM"!3Y:@2NJ$PZT
M6C!C<T-UNOIR-5--79L'I4"OYU#(X>#$4(F)"Q5I"4QK[92YV86==-^[<]ZX
M7>!0+Z+5MI+0E)U?Q$@+B1DV/W6Q`E?78VW_8XO4OB.TTC9<^956[Y]]]5/
M;]NO#ARX,.QZW7CTT;K-W2M8_!_A:W-&X-U=1O:7;@2ES_]R_TK(=_L;LT
M^=*S%5_;LTE;LP/@Y`'P3T"M<HW)VF`E5JN]0*"%.5N5)Z$N<WI45C.O)%A6
M4&SBC5J-]7K><N96P^RAF]#8U_MJ62L'JTTS;=F+;6:'.$X!<QPV!VGG-%
MJ+FDQE#<4-FZ?GDYT[IP==N*^?-7MC9;6C>LK."9YSFN:?/!SIE+V9W(4"M0
M`6+)&GA7@D$,G(![4`9WX7Y/WX8/T%^2MX3J&<85XQKXPDZ'G,CJ)U^$8
M!_*><!O_DZ_L;ACG>P]_!S^#GX',R]_DI?-[$;_[1D5]-P_^G!)-[UJO
MRV'D!@EZ,V%OP+FOP*[_9XV[!%7J(;A-6=$NK;^I0>6WH*CE/F(8I_WL^N_
M6BOTV==Y]"-T%IVB74`/8RT.^L-[0WTE^@E#3J.COP1M1?1BSGH&/HV>O1+
MY;:C?:#G%,S_>8L!=1=Z&F:>0-^#=%R(/3#K73GN;]#/_G=5^+?X9^@)N*/>
M!?T%Z(]#2CY`/D9/D'7H7O*WS%[T#700?#R!MZ%QD(^A4W@#V@C4;-N(!M'P
M%Y0FT5'T/-H--__KC=N;^1TJ_.Q[8/E!T/,4VH9&;QCQ`OXO^F($L/W[Z%6-
MMG>.R0>9[>0U0F:>!.1QM!6>?OPKL/,(<ROR<V9&B$Y$(V$N[O6=8;6KKG]
MMHZOM0=7*P&_K^U6V=NZJF7EBN:FY<L:ES2XZNMJ:ZJK'(NDA7:AU&(V&8L*
M#?EY>E['L7"PH-J`I,1$M2JFLE52,%A'<:D?"/TW$&*J""3E9AE5C&EBXLV2
M,DAN^8*DG)64KTMBD]B"6NIJQ8`DJF_Y)7$"]W1&`#[BEZ*B.J7!MVLP6Z4A
MA8#8[3!"#)0.^445Q2`JMPWE`S$_*`O9<CW2;[!_+I:E,HW`&@`2*V11E*X
MIA5K`*D)K$@1I"^DTZJ,(]`_H(8Z(P&_S6Z/UM6VJT627V,AGZ92U?E47E,I
M;J.FHT-BJC:=/#QA0IMBSH(!::#_SHC*],/8)!-()A]5S4[U%LFOWK+[@U+P
M?%"ME?P!U4FU=JR[/D_'YU/"#P>'21*3UQ"X(TU]=#.E/T?1.4S7$`45"&R
MJ4BBDHPE^R<RB4V2:)*2J8*"Y$@`(HQ"$1@UD7G]D$U5#D=54VP(K@YJZSK
M4.=U;HBHQ*&(0_U`@:]7LC?9[.;HG$SHR]@(`@'A@)C:[=3Q0Q,RV@2(FNB,
M9'$1;;*=0[++&55)C'+2<QQKF'(2<YSKPV,2K&9'5R2ILH[V`2D`,3[4KR8V
M03YMITLAF=2B3VQV*5EL%IM=44U6!*O:![:)*E<%88%1-PZ`3*%#DB8-*?HD
M^YJRP015YF*Q60(U5$]`"L1RW_N&2D&!6%>K!IW9I>^.J+(?`+D_MT:!5(,+
M1O3'8(FV^;7E4UW2B&J1VJZO)S4KL*TKH@W)#5,M/A7%-N=&J:Z`GXL!I(Q
M?]8$JDOJC%Q$GLQD:JEH>6#EJ*HGPJ7^""OJ@+)R,`658C9!F"G;1$C-KLJ
M1V&!HU)D,$H3#2)TRR1,9]=F5(FO.]+1)75T]D2:<H9D&50=ZPA8T4L675
M0,JI>H=>C!`;$P5!$Q!$!0"IK05ZE7?HX3%!P#4J3=6V%C&";6A.&LQ0;Q$#
M@_Z<',5O4LK1=/(%Y[3I*`IZ?$&;/6K/MKI:`FPQ-S&,T-.@!N=8C`,J`=`(
MJ-%(-):E-.?%B#0H1:4A495#$>H;#86Y5PPM)CGUJK[)NR&8$&8D!W8<P@-
MIJHX;3<&5UVMX=?1X!?8[7-L,:F7.KJ25+F44XC`G85T126FPV;??3_2PI
M_;")84=K^SF9DF6ZEX?HMDU*[0-)J2O2HDE#!7G(MIO.58PZ<$=W6UTM%+.V
ME(0/=*9D?*"K)W+1!-?)`]V1<P037ZPMFEH$O,A%$<X*C4HHE1(I(E*$:EH'
MB%Z3MUV4$4IH7%8C:/CF";AX=U7`AI&FR=(EF::HQ&@L5F:K-%H@U4J'8(8
M0_T.B`-T?1Z,#B5C49KCJ`0B`E^L8JD5HB.UIC#1%:CYTF";:I#:*-U+Z=XL
M74?I/&0&+L%UM;N3IH!TK;1..]#I8_[7S8@YVV=LN8:$[%WE[=VG?S+WGHW-
M/*G?R@<1O<C,W3]A'-ZNP;Y].G9V.SO]5O_QXTVCWP$I^T=<%;_%4JR<;2>
M-",!KJM+`'Y,PU^DOTE0+9S^[^`$?I\3/Z%B3!_IFG*P^M0-SH,=UH"OP5<
MJ`=.^^>X--R*22I/_C'FZ36G"L_)C.#V#SY@-(/SUWZ*Q4_QM5"-+%2
M(_R[LEBXJCB%OND]TXO7:Z;WI^NPT9_BG#RJ%?WQ?$8SO8_E]I43X[:0B
MO#UY97)ZDI$G/<N42:54^/M55+_L(H)7%,^#TF(QC?%=XE6B?_=:E->?LO
M(_2+<*?AZJ$'_ZX1LA<Q*&)D8G$!$-_#68FBMV*<,%[8>V%X0M[+IRX</8"
M/W+NY#GU'&,AX^^BM57L?%5K#>^XGUE^A4FH1Y5B:JFU<LJXSKK/4M.OJR^
M3-(O7WZ9N,YXSY`3+^'TBY=?)&M/CYFKM/#I]XG3G-/G-D1`ZCH>?PF\
MA9]2*H1O'9LO[#DV?BQSC&EX7'Z<)!['(^.)<7)T'*?'+X^3M8?[#@?9KZI
M9(03C^#]^Y8(8W&O$`</AN]M$>Y5&H5R7!HNY2&>03UH'/,>#UP7.GLD38
MT!,4>N`]SUT<YB`FK)L)#S/8R'@9,MV9Z21R9V.3(G<Z:I2WY>X0;E=$(0@Z
M5-S5L%7E&F%)!1<XK:&S=@8-KF-8;A$A3'"@F#T&ON,>XRLT>@RKC4.&>-
M5XP9(^%VK21&48X48(Y/(&/IKJ[G,Z."3X#AS(?VJ#B`ZJCB_9R9X^J.Z"B
M<,^&2`KCQZ*/'#F"VBHZ5'=71(U51#O4`0!D"B0`,%6D2E!;="P^MM-)&X"
M:,SIC,<IA"GFS/(T"#OCP`:Q^%@<D+&=*.Z,C^%X?`S%QX`>QQL!CL<I.8YA
M!#QQ9U8]:`#%&T$!=&-9U?$XR,=A?+QT(Z3?P,9VEW["F5N9'-T<F5A;0IE
M;F1O8FH*."`P(&]B:@H@("`S.38S"F5N9&]B:@HY(#`@;V)J"CP("],96YG
M=&@@,3`@,"!2"B`@("]&:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IX
MG%V0OV[$(`S&=Y["XW4XD41-FR&*5%V7#/VCIGT``B9%:@`1,N3M:^!TE3J`
M?;?!]C,CZ/UD3@[')"2-H8U7`S>U!(LRX&,OJ!I219KE7:[",T[FZ=@B
MKJ/5CO4]`J;C$<<'I2;L8[!@#+2@,QBYP^KI,Y6C:O?_!%6V$B@T#*-1T
MW8OPKV)%X-E'A7533S.9/M3?!X>H<EY7;XDG<+-"XE!V`597U4#]%H/#*WZ
M5^N*8];R6P36MTE95118_R`S4R"N"]?$C_>9*1"+PB)INJ+I$K>%VZ1IBJ;)
M[U]?2C])([NU*/<0J+LU]Q6:LA8O(W>.Y]<>?T"8DM_WPIE;F1S=')E86T*
M96YD;V)J"C$P(#`@;V)J"B`@(#(V,`IE;F1O8FH*,3$@,"!O8FH*/#P@+U1Y
M<&4@+T9O;G1$97-C<FEP=&]R"B`@("]&;VYT3F%M92`O6%!*2U-2*TQI8F5R
M871I;VY386YS"B`@("]&;VYT1F%M:6QY("A,:6)E<F%T:6]N(%-A;G,I"B`@
M("]&;&%G<R`S,@H@("`O1F]N=$)";W@@6R`M,C`S("TS,#,@,3`U,"`Y,3`@
M70H@("`O271A;&EC06YG;&4@,`H@("`O07-C96YT(#DP-0H@("`O1&5S8V5N
M="`M,C$Q"B`@("]#87!(96EG:'0@.3$P"B`@("]3=&5M5B`X,`H@("`O4W1E
M;4@@.#`*("`@+T9O;G1&:6QE,B`W(#`@4@H^/@IE;F1O8FH*-B`P(&]B:@H
M/"`O5'EP92`O1F]N=`H@("`O4W5B='EP92`O5')U951Y<&4*("`@+T)A<V5&
M;VYT("]84$I+4U(K3&EB97)A=&EO;E-A;G,*("`@+T9I<G-T0VAA<B`S,@H@
M("`O3&%S=$-H87(@,3(R"B`@("]&;VYT1&5S8W)I<'1O<B`Q,2`P(%(*("`@
M+T5N8V]D:6YG("]7:6Y!;G-I16YC;V1I;F<*("`@+U=I9'1H<R!;(#`@,"`P
M(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@
M,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P
M(#8V-B`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#4U-B`P(#`@
M,"`U-38@,"`P(#4U-B`P(#`@,"`R,C(@,"`P(#`@,"`P(#,S,R`P(#(W-R`P
M(#`@,"`P(#`@-3`P(%T*("`@("]4;U5N:6-O9&4@.2`P(%(*/CX*96YD;V)J
M"C$@,"!O8FH*/#P@+U1Y<&4@+U!A9V5S"B`@("]+:61S(%L@,B`P(%(@70H@
M("`O0V]U;G0@,0H^/@IE;F1O8FH*,3(@,"!O8FH*/#P@+U!R;V1U8V5R("AC
M86ER;R`Q+C$U+C$P("AH='1P.BO8V%I<F]G<F%P:&EC<RYO<F<I*0H@("`O
M0W)E871I;VY$871E("A$.C(P,3DP,S`U,#0Q,C$P*S`Q)S`P*0H^/@IE;F1O
M8FH*,3,@,"!O8FH*/#P@+U1Y<&4@+T-A=&%L;V<*("`@+U!A9V5S(#$@,"!2
M"CX^"F5N9&]B:@IX<F5F"C`@,30*,#`P,#`P,#`P,"`V-34S-2!F(`HP,#`P
M,#`U.#`V(#`P,#`P(&X@"C`P,#`P,#`T-#(@,#`P,#`@;B`*,#`P,#`P,#,S
M,R`P,#`P,"!N(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#`S,3$@,#`P
M,#`@;B`*,#`P,#`P-3,Y,2`P,#`P,"!N(`HP,#`P,#`P-C<T(#`P,#`P(&X@
M"C`P,#`P,#0W,S$@,#`P,#`@;B`*,#`P,#`P-#<U-"`P,#`P,"!N(`HP,#`P
M,#`U,#DR(#`P,#`P(&X@"C`P,#`P,#4Q,34@,#`P,#`@;B`*,#`P,#`P-3@W
M,2`P,#`P,"!N(`HP,#`P,#`U.3@X(#`P,#`P(&X@"G1R86EL97(*/#P@+U-I
M>F4@,30*("`@+U)O;W0@,3,@,"!2"B`@("]);F9O(#$R(#`@4@H^/@IS=&%R
1='AR968*-C`T,0HE)45/1@H`
`
end









share|improve this question



















  • 1





    LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

    – Johannes_B
    Mar 28 at 7:30






  • 1





    It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

    – moewe
    Mar 29 at 4:53






  • 1





    Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

    – moewe
    Mar 29 at 4:56







  • 1





    the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

    – David Carlisle
    Mar 29 at 7:41






  • 1





    @U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

    – David Carlisle
    Mar 30 at 23:02
















3















While testing some of my new environments I made a mistake like this:



...
begindocument
...
beginA
...
endA
...
beginB
...
endA
...
enddocument


LaTeX complained that B did not end when document ended. And it talks about the line where enddocument is, and the line where beginB was, but it did not talk about the mismatching endA (the location of the actual error).



Why can't LaTeX detect such? I know that newenvironment actually defines two commands, one for beginning and one for ending, but isn't it possible to detect the case where something is to be ended that never had begun?



Update 1:



The example I had given was (to my best knowledge) the essence of the problem, and I contructed it in the head as the original file has thousands of lines and many figures, etc. (too much to present here, and also written by a TeX analphabet, so you will tear your hair out to see my struggles...). But people do not believe what I wrote. So I made a small test file from my big file, showing the problem:



Here's the essential part of the input:



begingfxTableCap[p]lrCaptionlabel2%
gfxCap0.4Platzhalter.pdfCaption 2A
&
gfxCap0.4Platzhalter.pdfCaption 2B
endgfxTableCapLab


Causing this output (truncated to the essence):



This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex)
restricted write18 enabled.
entering extended mode
(./xxx.tex
LaTeX2e <2017-04-15>


[...]



<Platzhalter.pdf, id=1, 284.52756pt x 227.62204pt> <use Platzhalter.pdf>
<use Platzhalter.pdf> <use Platzhalter.pdf> <use Platzhalter.pdf>

! LaTeX Error: begingfxTableCap on input line 88 ended by enddocument.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.


So it does not say "unexpected endgfxTableCapLab.



In case it's special for the environments I had defined, here's the mess:



documentclass[a4paper,twoside]report
newcommandgtLab
newcommandgtCap
newenvironmentgfxTableCapLab[4][htbp]%
beginfigure[#1]%
begintabular#2%
endtabular%
gtCap%
endfigure%

newenvironmentgfxTableCap[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTableLab[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTable[2][htbp]%
begingfxTableCapLab#2%
%
endgfxTableCapLab
newcommandgLab
newcommandgCap
newcommandgfxCapLab[4]%
beginminipage[t]#1textwidth%
graphic%
gCap%
endminipage

newcommandgfxCap[3]gfxCapLab#1#2#3
begindocument
Some text...
begingfxTableCapLab[p]lrCaptionlabel1%
endgfxTableCapLab
%
Text
begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab

enddocument


For all who do not have a nice placeholder PDF, here's the uuencoded version (I can't attach a PDF as image):



begin 644 Platzhalter.pdf
M)5!$1BTQ+C4*);7MKOL*-"`P(&]B:@H/"`O3&5N9W1H(#4@,"!2"B`@("]&
M:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IXG)5036L"00R]YU?DJ(>-
MDQ7]EHH!4&H[=S$PU*K4G8/6J'07V]VEQ9I*UC"9,)[Y.4EC,ZB8DLBB7+F
M%`5?.CB`&ZBG!YPU#G?OP!0X>_'X8=3<WANL4$A]2"%]%VOKV4#`!1Z0!X4Q
MFZ0H9<G8?UQCAQ(#:8Y?0&M`)`.1:Z4@J4>4?-`+8/]+Y1F7UWW<X.'GR'_K
M71K8ZE>;SSE<8=W!;PGHX>KCV5RI-'5/B-+I!!4.6'I8+:M7-6/*EM831[;
MYO2Y;]IIY2>GU^-T7>9P7V`)9VT07*(*96YD<W1R96%M"F5N9&]B:@HU(#`@
M;V)J"B`@(#(Q.0IE;F1O8FH*,R`P(&]B:@H/`H@("`O17AT1U-T871E(#P
M"B`@("`@("]A,"`/"`O0T$@,2`O8V$@,2`^/@H@("`^/@H@("`O1F]N="`
M/`H@("`@("`O9BTP+3`@-B`P(%(*("`@/CX*/CX*96YD;V)J"C(@,"!O8FH*
M/#P@+U1Y<&4@+U!A9V4@)2`Q"B`@("]087)E;G0@,2`P(%(*("`@+TUE9&EA
M0F]X(%L@,"`P(#(X,RXT-C0U-CD@,C(V+C<W,38U,B!="B`@("]#;VYT96YT
M<R`T(#`@4@H@("`O1W)O=7`@/#P*("`@("`@+U1Y<&4@+T=R;W5P"B`@("`@
M("]3("]4<F%N<W!A<F5N8WD*("`@("`@+TD@=')U90H@("`@("`O0U,@+T1E
M=FEC95)'0@H@("`^/@H@("`O4F5S;W5R8V5S(#,@,"!2"CX^"F5N9&]B:@HW
M(#`@;V)J"CP("],96YG=&@@."`P(%(*("`@+T9I;'1E<B`O1FQA=&5$96-O
M9&4*("`@+TQE;F=T:#$@-3@X.`H^/@IS=')E86T*>)S=.&UT$U=V[[V9T<B6
M;4E&,K:%/2,&V0ZR+2-AL,%8$TL:Y'4",K:"9&(L@PV&?-A&)AO(!V(A&Q`0
MDX3-R2Y)8%O2#0E91H0$D_V(VI[=9GO(ANXFI]W=M'C3M*<GC6N:7=)V$UN]
M;R032)OMG_SJD^;-_7KWW7O???<]"6&$4#Y*(`:)F^_I'_GUS+.C"/'_B1#I
MV7S?F.A[UO<A"'0#7K)E9.L]5]**D(%=X,,M_7N75M^7KT#1K.`'[;T&#_
M`#M]]G:$YHT!;=D0$(HZ=`6``QM&KIG['XQP"0!OTSQNX<W]_/_G#<"^.!
MM]S3?_(>R__-P#J`1='=@R.['YSXR>`U#[R*"_/`>X,)@+8_J4QBY6L[Q
MK'[*G=)Q[[6<8PB`*,50,D?)YWA=WF<MYS"E>QVL-NMON).+L(/ST[Q(7_
M)*??0MF(N@%A-@/N;VH",U'.^6NTP0_.1?-[UD(OE,.;.88;@":X&C@$$]
MLK$L(9=A^%KX'J0WZ64]H]?U"1:79:VES[+'PADM;ULR%H:WR'GFH,7"S^O+
M8_ABY/5.%3>[G!M[1Z>PJW?*W3M:;GJO?&I)`^JE#5N*B&0W2V:[NY+P2ZL`
MMKN7L1^NVO7:KME-;Y#.AUY_L#5]ZM3L(WC?\>97]UY8J=_YC?<WE7#S_9_
M]#,.T^`'QA!;'$K=PGB,RPO990TPI>!BDRH`5U%K!Y-<E<Y<H7#*I?FR`D.
MCW`)CA@Y@2-7.0QT;B*3EFT+'<&U',YDV6GN,C?)@0@&159P`X.UH[1T1U:
M<X%#.`+C]EC3I[G+OUA*8WG^LQ';)Q=@]SH5O1=V;UKU<%59%?!P0)":O(*
M@_E<.4><I1`>;H%U`7$X*A6Y/F^X:4_3>!/3Y$M85ENI'1;K@J#5ZETM,)AI
M*5]Y*0/^RA#K)2"]LZ:DN;.O+QR3Y%NRSC%F*Q&$/EIGI/")4@[Y3;.^5Q
M]8Z:(>93WBGL[!V%H'M<SBF(>J_;73[E=BUIZ'7V.B'W,*JQJ6MQ(L;E]83
M:6$1X:M;&8^[Q&JVE'C<RY9;B["TL)Y42T5,M;N5K,)$6.UE.#G_O14Y[X7
MUO]NP8KU*Y=VMU;I?IC?M/7XO9=^OGBEL;)HH:_*TUY?RN@J`G?NE.[8&U[
MD[:O]S3V6<X==?!-96$7>G;N,)FK/9YS/)=:YP_2,W6ASI99D2OMRWO7+:T
M>Z7XJ'?36&.4Q69W3WLD1M=7R%PEB[E:/`!>7U-$=Y6M*OH8!%34XBW%>XJ
M/%C('&(Q*T*([V8?9)]AS[`L8`7!X9(]):2DH+"$,2EY^G$.([$B9S,L3R7
M*,5&7:C`FX_SXSS0@P-GO>M7L^4&_?2Q?5XIN:[7;V0IY>"&/O:.^H@:C
MT2PU>I9[K!ZKE`L367Q+N.GO'MK?>/^;;WJY4LJ](;":^07^S[^>-],>(U7
MKT-:CBY!B'F-78'RL$%>RQYF9!#!$?)-D*>X/^$)V/?IXH_!W%IZIT6-&
M3Q[0859GT2W2G=*=U[VC^T#'SJ>,>"5>`-FK%<O3R(9;,EB`TT.6KN'`BF
M#?B`9TX&,&G##@,0..&7"W`<L&O-3@-PP8]AM835AL7Q<4#=ABP,B`O5G.
M*0/+&A9I8IK0*Y[6H"9<+%0')PV8((-H"!E&#"ROD0M-EJ".";%&S(?H!J&I
MY:PT?MZG<[1'1MANT#VS36GRPDLCR<;VKY12$*M>1JQO=%NQ7;K$O*MF2>9
MIIGMY`<'F:I#!S_[]2$M;H]!W/X-]K8=W7,1Z6'B1;PA:%#D4`$^49`I(`52
M`DEIZ;(T*;%I"1LEG)"PI'DY;WYP0:F2+L.HS%364#99=K6,TY>5HS*#%16'
M.)-FM,>+J5%3;FKM#KI-1FEY<F*Z%RJ)%6I3;GM0T&.&@L7C595*]T#KT".W
M5[QJ;H@HM;VFO/G"4,PLW?Y[>[Y38.'NV=<Y/N!H8!4WWU_QPWN$NS#]O;
MFJIY-%<G2J%.+$`.=)=<WR-META/Y?9*$F8&H9JWY^795LM"!3Y:@2NJ$PZT
M6C!C<T-UNOIR-5--79L'I4"OYU#(X>#$4(F)"Q5I"4QK[92YV86==-^[<]ZX
M7>!0+Z+5MI+0E)U?Q$@+B1DV/W6Q`E?78VW_8XO4OB.TTC9<^956[Y]]]5/
M;]NO#ARX,.QZW7CTT;K-W2M8_!_A:W-&X-U=1O:7;@2ES_]R_TK(=_L;LT
M^=*S%5_;LTE;LP/@Y`'P3T"M<HW)VF`E5JN]0*"%.5N5)Z$N<WI45C.O)%A6
M4&SBC5J-]7K><N96P^RAF]#8U_MJ62L'JTTS;=F+;6:'.$X!<QPV!VGG-%
MJ+FDQE#<4-FZ?GDYT[IP==N*^?-7MC9;6C>LK."9YSFN:?/!SIE+V9W(4"M0
M`6+)&GA7@D$,G(![4`9WX7Y/WX8/T%^2MX3J&<85XQKXPDZ'G,CJ)U^$8
M!_*><!O_DZ_L;ACG>P]_!S^#GX',R]_DI?-[$;_[1D5]-P_^G!)-[UJO
MRV'D!@EZ,V%OP+FOP*[_9XV[!%7J(;A-6=$NK;^I0>6WH*CE/F(8I_WL^N_
M6BOTV==Y]"-T%IVB74`/8RT.^L-[0WTE^@E#3J.COP1M1?1BSGH&/HV>O1+
MY;:C?:#G%,S_>8L!=1=Z&F:>0-^#=%R(/3#K73GN;]#/_G=5^+?X9^@)N*/>
M!?T%Z(]#2CY`/D9/D'7H7O*WS%[T#700?#R!MZ%QD(^A4W@#V@C4;-N(!M'P
M%Y0FT5'T/-H--__KC=N;^1TJ_.Q[8/E!T/,4VH9&;QCQ`OXO^F($L/W[Z%6-
MMG>.R0>9[>0U0F:>!.1QM!6>?OPKL/,(<ROR<V9&B$Y$(V$N[O6=8;6KKG]
MMHZOM0=7*P&_K^U6V=NZJF7EBN:FY<L:ES2XZNMJ:ZJK'(NDA7:AU&(V&8L*
M#?EY>E['L7"PH-J`I,1$M2JFLE52,%A'<:D?"/TW$&*J""3E9AE5C&EBXLV2
M,DAN^8*DG)64KTMBD]B"6NIJQ8`DJF_Y)7$"]W1&`#[BEZ*B.J7!MVLP6Z4A
MA8#8[3!"#)0.^445Q2`JMPWE`S$_*`O9<CW2;[!_+I:E,HW`&@`2*V11E*X
MIA5K`*D)K$@1I"^DTZJ,(]`_H(8Z(P&_S6Z/UM6VJT627V,AGZ92U?E47E,I
M;J.FHT-BJC:=/#QA0IMBSH(!::#_SHC*],/8)!-()A]5S4[U%LFOWK+[@U+P
M?%"ME?P!U4FU=JR[/D_'YU/"#P>'21*3UQ"X(TU]=#.E/T?1.4S7$`45"&R
MJ4BBDHPE^R<RB4V2:)*2J8*"Y$@`(HQ"$1@UD7G]D$U5#D=54VP(K@YJZSK
M4.=U;HBHQ*&(0_U`@:]7LC?9[.;HG$SHR]@(`@'A@)C:[=3Q0Q,RV@2(FNB,
M9'$1;;*=0[++&55)C'+2<QQKF'(2<YSKPV,2K&9'5R2ILH[V`2D`,3[4KR8V
M03YMITLAF=2B3VQV*5EL%IM=44U6!*O:![:)*E<%88%1-PZ`3*%#DB8-*?HD
M^YJRP015YF*Q60(U5$]`"L1RW_N&2D&!6%>K!IW9I>^.J+(?`+D_MT:!5(,+
M1O3'8(FV^;7E4UW2B&J1VJZO)S4KL*TKH@W)#5,M/A7%-N=&J:Z`GXL!I(Q
M?]8$JDOJC%Q$GLQD:JEH>6#EJ*HGPJ7^""OJ@+)R,`658C9!F"G;1$C-KLJ
M1V&!HU)D,$H3#2)TRR1,9]=F5(FO.]+1)75T]D2:<H9D&50=ZPA8T4L675
M0,JI>H=>C!`;$P5!$Q!$!0"IK05ZE7?HX3%!P#4J3=6V%C&";6A.&LQ0;Q$#
M@_Z<',5O4LK1=/(%Y[3I*`IZ?$&;/6K/MKI:`FPQ-S&,T-.@!N=8C`,J`=`(
MJ-%(-):E-.?%B#0H1:4A495#$>H;#86Y5PPM)CGUJK[)NR&8$&8D!W8<P@-
MIJHX;3<&5UVMX=?1X!?8[7-L,:F7.KJ25+F44XC`G85T126FPV;??3_2PI
M_;")84=K^SF9DF6ZEX?HMDU*[0-)J2O2HDE#!7G(MIO.58PZ<$=W6UTM%+.V
ME(0/=*9D?*"K)W+1!-?)`]V1<P037ZPMFEH$O,A%$<X*C4HHE1(I(E*$:EH'
MB%Z3MUV4$4IH7%8C:/CF";AX=U7`AI&FR=(EF::HQ&@L5F:K-%H@U4J'8(8
M0_T.B`-T?1Z,#B5C49KCJ`0B`E^L8JD5HB.UIC#1%:CYTF";:I#:*-U+Z=XL
M74?I/&0&+L%UM;N3IH!TK;1..]#I8_[7S8@YVV=LN8:$[%WE[=VG?S+WGHW-
M/*G?R@<1O<C,W3]A'-ZNP;Y].G9V.SO]5O_QXTVCWP$I^T=<%;_%4JR<;2>
M-",!KJM+`'Y,PU^DOTE0+9S^[^`$?I\3/Z%B3!_IFG*P^M0-SH,=UH"OP5<
MJ`=.^^>X--R*22I/_C'FZ36G"L_)C.#V#SY@-(/SUWZ*Q4_QM5"-+%2
M(_R[LEBXJCB%OND]TXO7:Z;WI^NPT9_BG#RJ%?WQ?$8SO8_E]I43X[:0B
MO#UY97)ZDI$G/<N42:54^/M55+_L(H)7%,^#TF(QC?%=XE6B?_=:E->?LO
M(_2+<*?AZJ$'_ZX1LA<Q*&)D8G$!$-_#68FBMV*<,%[8>V%X0M[+IRX</8"
M/W+NY#GU'&,AX^^BM57L?%5K#>^XGUE^A4FH1Y5B:JFU<LJXSKK/4M.OJR^
M3-(O7WZ9N,YXSY`3+^'TBY=?)&M/CYFKM/#I]XG3G-/G-D1`ZCH>?PF\
MA9]2*H1O'9LO[#DV?BQSC&EX7'Z<)!['(^.)<7)T'*?'+X^3M8?[#@?9KZI
M9(03C^#]^Y8(8W&O$`</AN]M$>Y5&H5R7!HNY2&>03UH'/,>#UP7.GLD38
MT!,4>N`]SUT<YB`FK)L)#S/8R'@9,MV9Z21R9V.3(G<Z:I2WY>X0;E=$(0@Z
M5-S5L%7E&F%)!1<XK:&S=@8-KF-8;A$A3'"@F#T&ON,>XRLT>@RKC4.&>-
M5XP9(^%VK21&48X48(Y/(&/IKJ[G,Z."3X#AS(?VJ#B`ZJCB_9R9X^J.Z"B
M<,^&2`KCQZ*/'#F"VBHZ5'=71(U51#O4`0!D"B0`,%6D2E!;="P^MM-)&X"
M:,SIC,<IA"GFS/(T"#OCP`:Q^%@<D+&=*.Z,C^%X?`S%QX`>QQL!CL<I.8YA
M!#QQ9U8]:`#%&T$!=&-9U?$XR,=A?+QT(Z3?P,9VEW["F5N9'-T<F5A;0IE
M;F1O8FH*."`P(&]B:@H@("`S.38S"F5N9&]B:@HY(#`@;V)J"CP("],96YG
M=&@@,3`@,"!2"B`@("]&:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IX
MG%V0OV[$(`S&=Y["XW4XD41-FR&*5%V7#/VCIGT``B9%:@`1,N3M:^!TE3J`
M?;?!]C,CZ/UD3@[')"2-H8U7`S>U!(LRX&,OJ!I219KE7:[",T[FZ=@B
MKJ/5CO4]`J;C$<<'I2;L8[!@#+2@,QBYP^KI,Y6C:O?_!%6V$B@T#*-1T
MW8OPKV)%X-E'A7533S.9/M3?!X>H<EY7;XDG<+-"XE!V`597U4#]%H/#*WZ
M5^N*8];R6P36MTE95118_R`S4R"N"]?$C_>9*1"+PB)INJ+I$K>%VZ1IBJ;)
M[U]?2C])([NU*/<0J+LU]Q6:LA8O(W>.Y]<>?T"8DM_WPIE;F1S=')E86T*
M96YD;V)J"C$P(#`@;V)J"B`@(#(V,`IE;F1O8FH*,3$@,"!O8FH*/#P@+U1Y
M<&4@+T9O;G1$97-C<FEP=&]R"B`@("]&;VYT3F%M92`O6%!*2U-2*TQI8F5R
M871I;VY386YS"B`@("]&;VYT1F%M:6QY("A,:6)E<F%T:6]N(%-A;G,I"B`@
M("]&;&%G<R`S,@H@("`O1F]N=$)";W@@6R`M,C`S("TS,#,@,3`U,"`Y,3`@
M70H@("`O271A;&EC06YG;&4@,`H@("`O07-C96YT(#DP-0H@("`O1&5S8V5N
M="`M,C$Q"B`@("]#87!(96EG:'0@.3$P"B`@("]3=&5M5B`X,`H@("`O4W1E
M;4@@.#`*("`@+T9O;G1&:6QE,B`W(#`@4@H^/@IE;F1O8FH*-B`P(&]B:@H
M/"`O5'EP92`O1F]N=`H@("`O4W5B='EP92`O5')U951Y<&4*("`@+T)A<V5&
M;VYT("]84$I+4U(K3&EB97)A=&EO;E-A;G,*("`@+T9I<G-T0VAA<B`S,@H@
M("`O3&%S=$-H87(@,3(R"B`@("]&;VYT1&5S8W)I<'1O<B`Q,2`P(%(*("`@
M+T5N8V]D:6YG("]7:6Y!;G-I16YC;V1I;F<*("`@+U=I9'1H<R!;(#`@,"`P
M(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@
M,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P
M(#8V-B`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#4U-B`P(#`@
M,"`U-38@,"`P(#4U-B`P(#`@,"`R,C(@,"`P(#`@,"`P(#,S,R`P(#(W-R`P
M(#`@,"`P(#`@-3`P(%T*("`@("]4;U5N:6-O9&4@.2`P(%(*/CX*96YD;V)J
M"C$@,"!O8FH*/#P@+U1Y<&4@+U!A9V5S"B`@("]+:61S(%L@,B`P(%(@70H@
M("`O0V]U;G0@,0H^/@IE;F1O8FH*,3(@,"!O8FH*/#P@+U!R;V1U8V5R("AC
M86ER;R`Q+C$U+C$P("AH='1P.BO8V%I<F]G<F%P:&EC<RYO<F<I*0H@("`O
M0W)E871I;VY$871E("A$.C(P,3DP,S`U,#0Q,C$P*S`Q)S`P*0H^/@IE;F1O
M8FH*,3,@,"!O8FH*/#P@+U1Y<&4@+T-A=&%L;V<*("`@+U!A9V5S(#$@,"!2
M"CX^"F5N9&]B:@IX<F5F"C`@,30*,#`P,#`P,#`P,"`V-34S-2!F(`HP,#`P
M,#`U.#`V(#`P,#`P(&X@"C`P,#`P,#`T-#(@,#`P,#`@;B`*,#`P,#`P,#,S
M,R`P,#`P,"!N(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#`S,3$@,#`P
M,#`@;B`*,#`P,#`P-3,Y,2`P,#`P,"!N(`HP,#`P,#`P-C<T(#`P,#`P(&X@
M"C`P,#`P,#0W,S$@,#`P,#`@;B`*,#`P,#`P-#<U-"`P,#`P,"!N(`HP,#`P
M,#`U,#DR(#`P,#`P(&X@"C`P,#`P,#4Q,34@,#`P,#`@;B`*,#`P,#`P-3@W
M,2`P,#`P,"!N(`HP,#`P,#`U.3@X(#`P,#`P(&X@"G1R86EL97(*/#P@+U-I
M>F4@,30*("`@+U)O;W0@,3,@,"!2"B`@("]);F9O(#$R(#`@4@H^/@IS=&%R
1='AR968*-C`T,0HE)45/1@H`
`
end









share|improve this question



















  • 1





    LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

    – Johannes_B
    Mar 28 at 7:30






  • 1





    It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

    – moewe
    Mar 29 at 4:53






  • 1





    Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

    – moewe
    Mar 29 at 4:56







  • 1





    the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

    – David Carlisle
    Mar 29 at 7:41






  • 1





    @U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

    – David Carlisle
    Mar 30 at 23:02














3












3








3








While testing some of my new environments I made a mistake like this:



...
begindocument
...
beginA
...
endA
...
beginB
...
endA
...
enddocument


LaTeX complained that B did not end when document ended. And it talks about the line where enddocument is, and the line where beginB was, but it did not talk about the mismatching endA (the location of the actual error).



Why can't LaTeX detect such? I know that newenvironment actually defines two commands, one for beginning and one for ending, but isn't it possible to detect the case where something is to be ended that never had begun?



Update 1:



The example I had given was (to my best knowledge) the essence of the problem, and I contructed it in the head as the original file has thousands of lines and many figures, etc. (too much to present here, and also written by a TeX analphabet, so you will tear your hair out to see my struggles...). But people do not believe what I wrote. So I made a small test file from my big file, showing the problem:



Here's the essential part of the input:



begingfxTableCap[p]lrCaptionlabel2%
gfxCap0.4Platzhalter.pdfCaption 2A
&
gfxCap0.4Platzhalter.pdfCaption 2B
endgfxTableCapLab


Causing this output (truncated to the essence):



This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex)
restricted write18 enabled.
entering extended mode
(./xxx.tex
LaTeX2e <2017-04-15>


[...]



<Platzhalter.pdf, id=1, 284.52756pt x 227.62204pt> <use Platzhalter.pdf>
<use Platzhalter.pdf> <use Platzhalter.pdf> <use Platzhalter.pdf>

! LaTeX Error: begingfxTableCap on input line 88 ended by enddocument.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.


So it does not say "unexpected endgfxTableCapLab.



In case it's special for the environments I had defined, here's the mess:



documentclass[a4paper,twoside]report
newcommandgtLab
newcommandgtCap
newenvironmentgfxTableCapLab[4][htbp]%
beginfigure[#1]%
begintabular#2%
endtabular%
gtCap%
endfigure%

newenvironmentgfxTableCap[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTableLab[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTable[2][htbp]%
begingfxTableCapLab#2%
%
endgfxTableCapLab
newcommandgLab
newcommandgCap
newcommandgfxCapLab[4]%
beginminipage[t]#1textwidth%
graphic%
gCap%
endminipage

newcommandgfxCap[3]gfxCapLab#1#2#3
begindocument
Some text...
begingfxTableCapLab[p]lrCaptionlabel1%
endgfxTableCapLab
%
Text
begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab

enddocument


For all who do not have a nice placeholder PDF, here's the uuencoded version (I can't attach a PDF as image):



begin 644 Platzhalter.pdf
M)5!$1BTQ+C4*);7MKOL*-"`P(&]B:@H/"`O3&5N9W1H(#4@,"!2"B`@("]&
M:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IXG)5036L"00R]YU?DJ(>-
MDQ7]EHH!4&H[=S$PU*K4G8/6J'07V]VEQ9I*UC"9,)[Y.4EC,ZB8DLBB7+F
M%`5?.CB`&ZBG!YPU#G?OP!0X>_'X8=3<WANL4$A]2"%]%VOKV4#`!1Z0!X4Q
MFZ0H9<G8?UQCAQ(#:8Y?0&M`)`.1:Z4@J4>4?-`+8/]+Y1F7UWW<X.'GR'_K
M71K8ZE>;SSE<8=W!;PGHX>KCV5RI-'5/B-+I!!4.6'I8+:M7-6/*EM831[;
MYO2Y;]IIY2>GU^-T7>9P7V`)9VT07*(*96YD<W1R96%M"F5N9&]B:@HU(#`@
M;V)J"B`@(#(Q.0IE;F1O8FH*,R`P(&]B:@H/`H@("`O17AT1U-T871E(#P
M"B`@("`@("]A,"`/"`O0T$@,2`O8V$@,2`^/@H@("`^/@H@("`O1F]N="`
M/`H@("`@("`O9BTP+3`@-B`P(%(*("`@/CX*/CX*96YD;V)J"C(@,"!O8FH*
M/#P@+U1Y<&4@+U!A9V4@)2`Q"B`@("]087)E;G0@,2`P(%(*("`@+TUE9&EA
M0F]X(%L@,"`P(#(X,RXT-C0U-CD@,C(V+C<W,38U,B!="B`@("]#;VYT96YT
M<R`T(#`@4@H@("`O1W)O=7`@/#P*("`@("`@+U1Y<&4@+T=R;W5P"B`@("`@
M("]3("]4<F%N<W!A<F5N8WD*("`@("`@+TD@=')U90H@("`@("`O0U,@+T1E
M=FEC95)'0@H@("`^/@H@("`O4F5S;W5R8V5S(#,@,"!2"CX^"F5N9&]B:@HW
M(#`@;V)J"CP("],96YG=&@@."`P(%(*("`@+T9I;'1E<B`O1FQA=&5$96-O
M9&4*("`@+TQE;F=T:#$@-3@X.`H^/@IS=')E86T*>)S=.&UT$U=V[[V9T<B6
M;4E&,K:%/2,&V0ZR+2-AL,%8$TL:Y'4",K:"9&(L@PV&?-A&)AO(!V(A&Q`0
MDX3-R2Y)8%O2#0E91H0$D_V(VI[=9GO(ANXFI]W=M'C3M*<GC6N:7=)V$UN]
M;R032)OMG_SJD^;-_7KWW7O???<]"6&$4#Y*(`:)F^_I'_GUS+.C"/'_B1#I
MV7S?F.A[UO<A"'0#7K)E9.L]5]**D(%=X,,M_7N75M^7KT#1K.`'[;T&#_
M`#M]]G:$YHT!;=D0$(HZ=`6``QM&KIG['XQP"0!OTSQNX<W]_/_G#<"^.!
MM]S3?_(>R__-P#J`1='=@R.['YSXR>`U#[R*"_/`>X,)@+8_J4QBY6L[Q
MK'[*G=)Q[[6<8PB`*,50,D?)YWA=WF<MYS"E>QVL-NMON).+L(/ST[Q(7_
M)*??0MF(N@%A-@/N;VH",U'.^6NTP0_.1?-[UD(OE,.;.88;@":X&C@$$]
MLK$L(9=A^%KX'J0WZ64]H]?U"1:79:VES[+'PADM;ULR%H:WR'GFH,7"S^O+
M8_ABY/5.%3>[G!M[1Z>PJW?*W3M:;GJO?&I)`^JE#5N*B&0W2V:[NY+P2ZL`
MMKN7L1^NVO7:KME-;Y#.AUY_L#5]ZM3L(WC?\>97]UY8J=_YC?<WE7#S_9_
M]#,.T^`'QA!;'$K=PGB,RPO990TPI>!BDRH`5U%K!Y-<E<Y<H7#*I?FR`D.
MCW`)CA@Y@2-7.0QT;B*3EFT+'<&U',YDV6GN,C?)@0@&159P`X.UH[1T1U:
M<X%#.`+C]EC3I[G+OUA*8WG^LQ';)Q=@]SH5O1=V;UKU<%59%?!P0)":O(*
M@_E<.4><I1`>;H%U`7$X*A6Y/F^X:4_3>!/3Y$M85ENI'1;K@J#5ZETM,)AI
M*5]Y*0/^RA#K)2"]LZ:DN;.O+QR3Y%NRSC%F*Q&$/EIGI/")4@[Y3;.^5Q
M]8Z:(>93WBGL[!V%H'M<SBF(>J_;73[E=BUIZ'7V.B'W,*JQJ6MQ(L;E]83
M:6$1X:M;&8^[Q&JVE'C<RY9;B["TL)Y42T5,M;N5K,)$6.UE.#G_O14Y[X7
MUO]NP8KU*Y=VMU;I?IC?M/7XO9=^OGBEL;)HH:_*TUY?RN@J`G?NE.[8&U[
MD[:O]S3V6<X==?!-96$7>G;N,)FK/9YS/)=:YP_2,W6ASI99D2OMRWO7+:T
M>Z7XJ'?36&.4Q69W3WLD1M=7R%PEB[E:/`!>7U-$=Y6M*OH8!%34XBW%>XJ
M/%C('&(Q*T*([V8?9)]AS[`L8`7!X9(]):2DH+"$,2EY^G$.([$B9S,L3R7
M*,5&7:C`FX_SXSS0@P-GO>M7L^4&_?2Q?5XIN:[7;V0IY>"&/O:.^H@:C
MT2PU>I9[K!ZKE`L367Q+N.GO'MK?>/^;;WJY4LJ](;":^07^S[^>-],>(U7
MKT-:CBY!B'F-78'RL$%>RQYF9!#!$?)-D*>X/^$)V/?IXH_!W%IZIT6-&
M3Q[0859GT2W2G=*=U[VC^T#'SJ>,>"5>`-FK%<O3R(9;,EB`TT.6KN'`BF
M#?B`9TX&,&G##@,0..&7"W`<L&O-3@-PP8]AM835AL7Q<4#=ABP,B`O5G.
M*0/+&A9I8IK0*Y[6H"9<+%0')PV8((-H"!E&#"ROD0M-EJ".";%&S(?H!J&I
MY:PT?MZG<[1'1MANT#VS36GRPDLCR<;VKY12$*M>1JQO=%NQ7;K$O*MF2>9
MIIGMY`<'F:I#!S_[]2$M;H]!W/X-]K8=W7,1Z6'B1;PA:%#D4`$^49`I(`52
M`DEIZ;(T*;%I"1LEG)"PI'DY;WYP0:F2+L.HS%364#99=K6,TY>5HS*#%16'
M.)-FM,>+J5%3;FKM#KI-1FEY<F*Z%RJ)%6I3;GM0T&.&@L7C595*]T#KT".W
M5[QJ;H@HM;VFO/G"4,PLW?Y[>[Y38.'NV=<Y/N!H8!4WWU_QPWN$NS#]O;
MFJIY-%<G2J%.+$`.=)=<WR-META/Y?9*$F8&H9JWY^795LM"!3Y:@2NJ$PZT
M6C!C<T-UNOIR-5--79L'I4"OYU#(X>#$4(F)"Q5I"4QK[92YV86==-^[<]ZX
M7>!0+Z+5MI+0E)U?Q$@+B1DV/W6Q`E?78VW_8XO4OB.TTC9<^956[Y]]]5/
M;]NO#ARX,.QZW7CTT;K-W2M8_!_A:W-&X-U=1O:7;@2ES_]R_TK(=_L;LT
M^=*S%5_;LTE;LP/@Y`'P3T"M<HW)VF`E5JN]0*"%.5N5)Z$N<WI45C.O)%A6
M4&SBC5J-]7K><N96P^RAF]#8U_MJ62L'JTTS;=F+;6:'.$X!<QPV!VGG-%
MJ+FDQE#<4-FZ?GDYT[IP==N*^?-7MC9;6C>LK."9YSFN:?/!SIE+V9W(4"M0
M`6+)&GA7@D$,G(![4`9WX7Y/WX8/T%^2MX3J&<85XQKXPDZ'G,CJ)U^$8
M!_*><!O_DZ_L;ACG>P]_!S^#GX',R]_DI?-[$;_[1D5]-P_^G!)-[UJO
MRV'D!@EZ,V%OP+FOP*[_9XV[!%7J(;A-6=$NK;^I0>6WH*CE/F(8I_WL^N_
M6BOTV==Y]"-T%IVB74`/8RT.^L-[0WTE^@E#3J.COP1M1?1BSGH&/HV>O1+
MY;:C?:#G%,S_>8L!=1=Z&F:>0-^#=%R(/3#K73GN;]#/_G=5^+?X9^@)N*/>
M!?T%Z(]#2CY`/D9/D'7H7O*WS%[T#700?#R!MZ%QD(^A4W@#V@C4;-N(!M'P
M%Y0FT5'T/-H--__KC=N;^1TJ_.Q[8/E!T/,4VH9&;QCQ`OXO^F($L/W[Z%6-
MMG>.R0>9[>0U0F:>!.1QM!6>?OPKL/,(<ROR<V9&B$Y$(V$N[O6=8;6KKG]
MMHZOM0=7*P&_K^U6V=NZJF7EBN:FY<L:ES2XZNMJ:ZJK'(NDA7:AU&(V&8L*
M#?EY>E['L7"PH-J`I,1$M2JFLE52,%A'<:D?"/TW$&*J""3E9AE5C&EBXLV2
M,DAN^8*DG)64KTMBD]B"6NIJQ8`DJF_Y)7$"]W1&`#[BEZ*B.J7!MVLP6Z4A
MA8#8[3!"#)0.^445Q2`JMPWE`S$_*`O9<CW2;[!_+I:E,HW`&@`2*V11E*X
MIA5K`*D)K$@1I"^DTZJ,(]`_H(8Z(P&_S6Z/UM6VJT627V,AGZ92U?E47E,I
M;J.FHT-BJC:=/#QA0IMBSH(!::#_SHC*],/8)!-()A]5S4[U%LFOWK+[@U+P
M?%"ME?P!U4FU=JR[/D_'YU/"#P>'21*3UQ"X(TU]=#.E/T?1.4S7$`45"&R
MJ4BBDHPE^R<RB4V2:)*2J8*"Y$@`(HQ"$1@UD7G]D$U5#D=54VP(K@YJZSK
M4.=U;HBHQ*&(0_U`@:]7LC?9[.;HG$SHR]@(`@'A@)C:[=3Q0Q,RV@2(FNB,
M9'$1;;*=0[++&55)C'+2<QQKF'(2<YSKPV,2K&9'5R2ILH[V`2D`,3[4KR8V
M03YMITLAF=2B3VQV*5EL%IM=44U6!*O:![:)*E<%88%1-PZ`3*%#DB8-*?HD
M^YJRP015YF*Q60(U5$]`"L1RW_N&2D&!6%>K!IW9I>^.J+(?`+D_MT:!5(,+
M1O3'8(FV^;7E4UW2B&J1VJZO)S4KL*TKH@W)#5,M/A7%-N=&J:Z`GXL!I(Q
M?]8$JDOJC%Q$GLQD:JEH>6#EJ*HGPJ7^""OJ@+)R,`658C9!F"G;1$C-KLJ
M1V&!HU)D,$H3#2)TRR1,9]=F5(FO.]+1)75T]D2:<H9D&50=ZPA8T4L675
M0,JI>H=>C!`;$P5!$Q!$!0"IK05ZE7?HX3%!P#4J3=6V%C&";6A.&LQ0;Q$#
M@_Z<',5O4LK1=/(%Y[3I*`IZ?$&;/6K/MKI:`FPQ-S&,T-.@!N=8C`,J`=`(
MJ-%(-):E-.?%B#0H1:4A495#$>H;#86Y5PPM)CGUJK[)NR&8$&8D!W8<P@-
MIJHX;3<&5UVMX=?1X!?8[7-L,:F7.KJ25+F44XC`G85T126FPV;??3_2PI
M_;")84=K^SF9DF6ZEX?HMDU*[0-)J2O2HDE#!7G(MIO.58PZ<$=W6UTM%+.V
ME(0/=*9D?*"K)W+1!-?)`]V1<P037ZPMFEH$O,A%$<X*C4HHE1(I(E*$:EH'
MB%Z3MUV4$4IH7%8C:/CF";AX=U7`AI&FR=(EF::HQ&@L5F:K-%H@U4J'8(8
M0_T.B`-T?1Z,#B5C49KCJ`0B`E^L8JD5HB.UIC#1%:CYTF";:I#:*-U+Z=XL
M74?I/&0&+L%UM;N3IH!TK;1..]#I8_[7S8@YVV=LN8:$[%WE[=VG?S+WGHW-
M/*G?R@<1O<C,W3]A'-ZNP;Y].G9V.SO]5O_QXTVCWP$I^T=<%;_%4JR<;2>
M-",!KJM+`'Y,PU^DOTE0+9S^[^`$?I\3/Z%B3!_IFG*P^M0-SH,=UH"OP5<
MJ`=.^^>X--R*22I/_C'FZ36G"L_)C.#V#SY@-(/SUWZ*Q4_QM5"-+%2
M(_R[LEBXJCB%OND]TXO7:Z;WI^NPT9_BG#RJ%?WQ?$8SO8_E]I43X[:0B
MO#UY97)ZDI$G/<N42:54^/M55+_L(H)7%,^#TF(QC?%=XE6B?_=:E->?LO
M(_2+<*?AZJ$'_ZX1LA<Q*&)D8G$!$-_#68FBMV*<,%[8>V%X0M[+IRX</8"
M/W+NY#GU'&,AX^^BM57L?%5K#>^XGUE^A4FH1Y5B:JFU<LJXSKK/4M.OJR^
M3-(O7WZ9N,YXSY`3+^'TBY=?)&M/CYFKM/#I]XG3G-/G-D1`ZCH>?PF\
MA9]2*H1O'9LO[#DV?BQSC&EX7'Z<)!['(^.)<7)T'*?'+X^3M8?[#@?9KZI
M9(03C^#]^Y8(8W&O$`</AN]M$>Y5&H5R7!HNY2&>03UH'/,>#UP7.GLD38
MT!,4>N`]SUT<YB`FK)L)#S/8R'@9,MV9Z21R9V.3(G<Z:I2WY>X0;E=$(0@Z
M5-S5L%7E&F%)!1<XK:&S=@8-KF-8;A$A3'"@F#T&ON,>XRLT>@RKC4.&>-
M5XP9(^%VK21&48X48(Y/(&/IKJ[G,Z."3X#AS(?VJ#B`ZJCB_9R9X^J.Z"B
M<,^&2`KCQZ*/'#F"VBHZ5'=71(U51#O4`0!D"B0`,%6D2E!;="P^MM-)&X"
M:,SIC,<IA"GFS/(T"#OCP`:Q^%@<D+&=*.Z,C^%X?`S%QX`>QQL!CL<I.8YA
M!#QQ9U8]:`#%&T$!=&-9U?$XR,=A?+QT(Z3?P,9VEW["F5N9'-T<F5A;0IE
M;F1O8FH*."`P(&]B:@H@("`S.38S"F5N9&]B:@HY(#`@;V)J"CP("],96YG
M=&@@,3`@,"!2"B`@("]&:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IX
MG%V0OV[$(`S&=Y["XW4XD41-FR&*5%V7#/VCIGT``B9%:@`1,N3M:^!TE3J`
M?;?!]C,CZ/UD3@[')"2-H8U7`S>U!(LRX&,OJ!I219KE7:[",T[FZ=@B
MKJ/5CO4]`J;C$<<'I2;L8[!@#+2@,QBYP^KI,Y6C:O?_!%6V$B@T#*-1T
MW8OPKV)%X-E'A7533S.9/M3?!X>H<EY7;XDG<+-"XE!V`597U4#]%H/#*WZ
M5^N*8];R6P36MTE95118_R`S4R"N"]?$C_>9*1"+PB)INJ+I$K>%VZ1IBJ;)
M[U]?2C])([NU*/<0J+LU]Q6:LA8O(W>.Y]<>?T"8DM_WPIE;F1S=')E86T*
M96YD;V)J"C$P(#`@;V)J"B`@(#(V,`IE;F1O8FH*,3$@,"!O8FH*/#P@+U1Y
M<&4@+T9O;G1$97-C<FEP=&]R"B`@("]&;VYT3F%M92`O6%!*2U-2*TQI8F5R
M871I;VY386YS"B`@("]&;VYT1F%M:6QY("A,:6)E<F%T:6]N(%-A;G,I"B`@
M("]&;&%G<R`S,@H@("`O1F]N=$)";W@@6R`M,C`S("TS,#,@,3`U,"`Y,3`@
M70H@("`O271A;&EC06YG;&4@,`H@("`O07-C96YT(#DP-0H@("`O1&5S8V5N
M="`M,C$Q"B`@("]#87!(96EG:'0@.3$P"B`@("]3=&5M5B`X,`H@("`O4W1E
M;4@@.#`*("`@+T9O;G1&:6QE,B`W(#`@4@H^/@IE;F1O8FH*-B`P(&]B:@H
M/"`O5'EP92`O1F]N=`H@("`O4W5B='EP92`O5')U951Y<&4*("`@+T)A<V5&
M;VYT("]84$I+4U(K3&EB97)A=&EO;E-A;G,*("`@+T9I<G-T0VAA<B`S,@H@
M("`O3&%S=$-H87(@,3(R"B`@("]&;VYT1&5S8W)I<'1O<B`Q,2`P(%(*("`@
M+T5N8V]D:6YG("]7:6Y!;G-I16YC;V1I;F<*("`@+U=I9'1H<R!;(#`@,"`P
M(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@
M,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P
M(#8V-B`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#4U-B`P(#`@
M,"`U-38@,"`P(#4U-B`P(#`@,"`R,C(@,"`P(#`@,"`P(#,S,R`P(#(W-R`P
M(#`@,"`P(#`@-3`P(%T*("`@("]4;U5N:6-O9&4@.2`P(%(*/CX*96YD;V)J
M"C$@,"!O8FH*/#P@+U1Y<&4@+U!A9V5S"B`@("]+:61S(%L@,B`P(%(@70H@
M("`O0V]U;G0@,0H^/@IE;F1O8FH*,3(@,"!O8FH*/#P@+U!R;V1U8V5R("AC
M86ER;R`Q+C$U+C$P("AH='1P.BO8V%I<F]G<F%P:&EC<RYO<F<I*0H@("`O
M0W)E871I;VY$871E("A$.C(P,3DP,S`U,#0Q,C$P*S`Q)S`P*0H^/@IE;F1O
M8FH*,3,@,"!O8FH*/#P@+U1Y<&4@+T-A=&%L;V<*("`@+U!A9V5S(#$@,"!2
M"CX^"F5N9&]B:@IX<F5F"C`@,30*,#`P,#`P,#`P,"`V-34S-2!F(`HP,#`P
M,#`U.#`V(#`P,#`P(&X@"C`P,#`P,#`T-#(@,#`P,#`@;B`*,#`P,#`P,#,S
M,R`P,#`P,"!N(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#`S,3$@,#`P
M,#`@;B`*,#`P,#`P-3,Y,2`P,#`P,"!N(`HP,#`P,#`P-C<T(#`P,#`P(&X@
M"C`P,#`P,#0W,S$@,#`P,#`@;B`*,#`P,#`P-#<U-"`P,#`P,"!N(`HP,#`P
M,#`U,#DR(#`P,#`P(&X@"C`P,#`P,#4Q,34@,#`P,#`@;B`*,#`P,#`P-3@W
M,2`P,#`P,"!N(`HP,#`P,#`U.3@X(#`P,#`P(&X@"G1R86EL97(*/#P@+U-I
M>F4@,30*("`@+U)O;W0@,3,@,"!2"B`@("]);F9O(#$R(#`@4@H^/@IS=&%R
1='AR968*-C`T,0HE)45/1@H`
`
end









share|improve this question
















While testing some of my new environments I made a mistake like this:



...
begindocument
...
beginA
...
endA
...
beginB
...
endA
...
enddocument


LaTeX complained that B did not end when document ended. And it talks about the line where enddocument is, and the line where beginB was, but it did not talk about the mismatching endA (the location of the actual error).



Why can't LaTeX detect such? I know that newenvironment actually defines two commands, one for beginning and one for ending, but isn't it possible to detect the case where something is to be ended that never had begun?



Update 1:



The example I had given was (to my best knowledge) the essence of the problem, and I contructed it in the head as the original file has thousands of lines and many figures, etc. (too much to present here, and also written by a TeX analphabet, so you will tear your hair out to see my struggles...). But people do not believe what I wrote. So I made a small test file from my big file, showing the problem:



Here's the essential part of the input:



begingfxTableCap[p]lrCaptionlabel2%
gfxCap0.4Platzhalter.pdfCaption 2A
&
gfxCap0.4Platzhalter.pdfCaption 2B
endgfxTableCapLab


Causing this output (truncated to the essence):



This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex)
restricted write18 enabled.
entering extended mode
(./xxx.tex
LaTeX2e <2017-04-15>


[...]



<Platzhalter.pdf, id=1, 284.52756pt x 227.62204pt> <use Platzhalter.pdf>
<use Platzhalter.pdf> <use Platzhalter.pdf> <use Platzhalter.pdf>

! LaTeX Error: begingfxTableCap on input line 88 ended by enddocument.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.


So it does not say "unexpected endgfxTableCapLab.



In case it's special for the environments I had defined, here's the mess:



documentclass[a4paper,twoside]report
newcommandgtLab
newcommandgtCap
newenvironmentgfxTableCapLab[4][htbp]%
beginfigure[#1]%
begintabular#2%
endtabular%
gtCap%
endfigure%

newenvironmentgfxTableCap[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTableLab[3][htbp]%
begingfxTableCapLab#2#3%
%
endgfxTableCapLab
newenvironmentgfxTable[2][htbp]%
begingfxTableCapLab#2%
%
endgfxTableCapLab
newcommandgLab
newcommandgCap
newcommandgfxCapLab[4]%
beginminipage[t]#1textwidth%
graphic%
gCap%
endminipage

newcommandgfxCap[3]gfxCapLab#1#2#3
begindocument
Some text...
begingfxTableCapLab[p]lrCaptionlabel1%
endgfxTableCapLab
%
Text
begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab

enddocument


For all who do not have a nice placeholder PDF, here's the uuencoded version (I can't attach a PDF as image):



begin 644 Platzhalter.pdf
M)5!$1BTQ+C4*);7MKOL*-"`P(&]B:@H/"`O3&5N9W1H(#4@,"!2"B`@("]&
M:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IXG)5036L"00R]YU?DJ(>-
MDQ7]EHH!4&H[=S$PU*K4G8/6J'07V]VEQ9I*UC"9,)[Y.4EC,ZB8DLBB7+F
M%`5?.CB`&ZBG!YPU#G?OP!0X>_'X8=3<WANL4$A]2"%]%VOKV4#`!1Z0!X4Q
MFZ0H9<G8?UQCAQ(#:8Y?0&M`)`.1:Z4@J4>4?-`+8/]+Y1F7UWW<X.'GR'_K
M71K8ZE>;SSE<8=W!;PGHX>KCV5RI-'5/B-+I!!4.6'I8+:M7-6/*EM831[;
MYO2Y;]IIY2>GU^-T7>9P7V`)9VT07*(*96YD<W1R96%M"F5N9&]B:@HU(#`@
M;V)J"B`@(#(Q.0IE;F1O8FH*,R`P(&]B:@H/`H@("`O17AT1U-T871E(#P
M"B`@("`@("]A,"`/"`O0T$@,2`O8V$@,2`^/@H@("`^/@H@("`O1F]N="`
M/`H@("`@("`O9BTP+3`@-B`P(%(*("`@/CX*/CX*96YD;V)J"C(@,"!O8FH*
M/#P@+U1Y<&4@+U!A9V4@)2`Q"B`@("]087)E;G0@,2`P(%(*("`@+TUE9&EA
M0F]X(%L@,"`P(#(X,RXT-C0U-CD@,C(V+C<W,38U,B!="B`@("]#;VYT96YT
M<R`T(#`@4@H@("`O1W)O=7`@/#P*("`@("`@+U1Y<&4@+T=R;W5P"B`@("`@
M("]3("]4<F%N<W!A<F5N8WD*("`@("`@+TD@=')U90H@("`@("`O0U,@+T1E
M=FEC95)'0@H@("`^/@H@("`O4F5S;W5R8V5S(#,@,"!2"CX^"F5N9&]B:@HW
M(#`@;V)J"CP("],96YG=&@@."`P(%(*("`@+T9I;'1E<B`O1FQA=&5$96-O
M9&4*("`@+TQE;F=T:#$@-3@X.`H^/@IS=')E86T*>)S=.&UT$U=V[[V9T<B6
M;4E&,K:%/2,&V0ZR+2-AL,%8$TL:Y'4",K:"9&(L@PV&?-A&)AO(!V(A&Q`0
MDX3-R2Y)8%O2#0E91H0$D_V(VI[=9GO(ANXFI]W=M'C3M*<GC6N:7=)V$UN]
M;R032)OMG_SJD^;-_7KWW7O???<]"6&$4#Y*(`:)F^_I'_GUS+.C"/'_B1#I
MV7S?F.A[UO<A"'0#7K)E9.L]5]**D(%=X,,M_7N75M^7KT#1K.`'[;T&#_
M`#M]]G:$YHT!;=D0$(HZ=`6``QM&KIG['XQP"0!OTSQNX<W]_/_G#<"^.!
MM]S3?_(>R__-P#J`1='=@R.['YSXR>`U#[R*"_/`>X,)@+8_J4QBY6L[Q
MK'[*G=)Q[[6<8PB`*,50,D?)YWA=WF<MYS"E>QVL-NMON).+L(/ST[Q(7_
M)*??0MF(N@%A-@/N;VH",U'.^6NTP0_.1?-[UD(OE,.;.88;@":X&C@$$]
MLK$L(9=A^%KX'J0WZ64]H]?U"1:79:VES[+'PADM;ULR%H:WR'GFH,7"S^O+
M8_ABY/5.%3>[G!M[1Z>PJW?*W3M:;GJO?&I)`^JE#5N*B&0W2V:[NY+P2ZL`
MMKN7L1^NVO7:KME-;Y#.AUY_L#5]ZM3L(WC?\>97]UY8J=_YC?<WE7#S_9_
M]#,.T^`'QA!;'$K=PGB,RPO990TPI>!BDRH`5U%K!Y-<E<Y<H7#*I?FR`D.
MCW`)CA@Y@2-7.0QT;B*3EFT+'<&U',YDV6GN,C?)@0@&159P`X.UH[1T1U:
M<X%#.`+C]EC3I[G+OUA*8WG^LQ';)Q=@]SH5O1=V;UKU<%59%?!P0)":O(*
M@_E<.4><I1`>;H%U`7$X*A6Y/F^X:4_3>!/3Y$M85ENI'1;K@J#5ZETM,)AI
M*5]Y*0/^RA#K)2"]LZ:DN;.O+QR3Y%NRSC%F*Q&$/EIGI/")4@[Y3;.^5Q
M]8Z:(>93WBGL[!V%H'M<SBF(>J_;73[E=BUIZ'7V.B'W,*JQJ6MQ(L;E]83
M:6$1X:M;&8^[Q&JVE'C<RY9;B["TL)Y42T5,M;N5K,)$6.UE.#G_O14Y[X7
MUO]NP8KU*Y=VMU;I?IC?M/7XO9=^OGBEL;)HH:_*TUY?RN@J`G?NE.[8&U[
MD[:O]S3V6<X==?!-96$7>G;N,)FK/9YS/)=:YP_2,W6ASI99D2OMRWO7+:T
M>Z7XJ'?36&.4Q69W3WLD1M=7R%PEB[E:/`!>7U-$=Y6M*OH8!%34XBW%>XJ
M/%C('&(Q*T*([V8?9)]AS[`L8`7!X9(]):2DH+"$,2EY^G$.([$B9S,L3R7
M*,5&7:C`FX_SXSS0@P-GO>M7L^4&_?2Q?5XIN:[7;V0IY>"&/O:.^H@:C
MT2PU>I9[K!ZKE`L367Q+N.GO'MK?>/^;;WJY4LJ](;":^07^S[^>-],>(U7
MKT-:CBY!B'F-78'RL$%>RQYF9!#!$?)-D*>X/^$)V/?IXH_!W%IZIT6-&
M3Q[0859GT2W2G=*=U[VC^T#'SJ>,>"5>`-FK%<O3R(9;,EB`TT.6KN'`BF
M#?B`9TX&,&G##@,0..&7"W`<L&O-3@-PP8]AM835AL7Q<4#=ABP,B`O5G.
M*0/+&A9I8IK0*Y[6H"9<+%0')PV8((-H"!E&#"ROD0M-EJ".";%&S(?H!J&I
MY:PT?MZG<[1'1MANT#VS36GRPDLCR<;VKY12$*M>1JQO=%NQ7;K$O*MF2>9
MIIGMY`<'F:I#!S_[]2$M;H]!W/X-]K8=W7,1Z6'B1;PA:%#D4`$^49`I(`52
M`DEIZ;(T*;%I"1LEG)"PI'DY;WYP0:F2+L.HS%364#99=K6,TY>5HS*#%16'
M.)-FM,>+J5%3;FKM#KI-1FEY<F*Z%RJ)%6I3;GM0T&.&@L7C595*]T#KT".W
M5[QJ;H@HM;VFO/G"4,PLW?Y[>[Y38.'NV=<Y/N!H8!4WWU_QPWN$NS#]O;
MFJIY-%<G2J%.+$`.=)=<WR-META/Y?9*$F8&H9JWY^795LM"!3Y:@2NJ$PZT
M6C!C<T-UNOIR-5--79L'I4"OYU#(X>#$4(F)"Q5I"4QK[92YV86==-^[<]ZX
M7>!0+Z+5MI+0E)U?Q$@+B1DV/W6Q`E?78VW_8XO4OB.TTC9<^956[Y]]]5/
M;]NO#ARX,.QZW7CTT;K-W2M8_!_A:W-&X-U=1O:7;@2ES_]R_TK(=_L;LT
M^=*S%5_;LTE;LP/@Y`'P3T"M<HW)VF`E5JN]0*"%.5N5)Z$N<WI45C.O)%A6
M4&SBC5J-]7K><N96P^RAF]#8U_MJ62L'JTTS;=F+;6:'.$X!<QPV!VGG-%
MJ+FDQE#<4-FZ?GDYT[IP==N*^?-7MC9;6C>LK."9YSFN:?/!SIE+V9W(4"M0
M`6+)&GA7@D$,G(![4`9WX7Y/WX8/T%^2MX3J&<85XQKXPDZ'G,CJ)U^$8
M!_*><!O_DZ_L;ACG>P]_!S^#GX',R]_DI?-[$;_[1D5]-P_^G!)-[UJO
MRV'D!@EZ,V%OP+FOP*[_9XV[!%7J(;A-6=$NK;^I0>6WH*CE/F(8I_WL^N_
M6BOTV==Y]"-T%IVB74`/8RT.^L-[0WTE^@E#3J.COP1M1?1BSGH&/HV>O1+
MY;:C?:#G%,S_>8L!=1=Z&F:>0-^#=%R(/3#K73GN;]#/_G=5^+?X9^@)N*/>
M!?T%Z(]#2CY`/D9/D'7H7O*WS%[T#700?#R!MZ%QD(^A4W@#V@C4;-N(!M'P
M%Y0FT5'T/-H--__KC=N;^1TJ_.Q[8/E!T/,4VH9&;QCQ`OXO^F($L/W[Z%6-
MMG>.R0>9[>0U0F:>!.1QM!6>?OPKL/,(<ROR<V9&B$Y$(V$N[O6=8;6KKG]
MMHZOM0=7*P&_K^U6V=NZJF7EBN:FY<L:ES2XZNMJ:ZJK'(NDA7:AU&(V&8L*
M#?EY>E['L7"PH-J`I,1$M2JFLE52,%A'<:D?"/TW$&*J""3E9AE5C&EBXLV2
M,DAN^8*DG)64KTMBD]B"6NIJQ8`DJF_Y)7$"]W1&`#[BEZ*B.J7!MVLP6Z4A
MA8#8[3!"#)0.^445Q2`JMPWE`S$_*`O9<CW2;[!_+I:E,HW`&@`2*V11E*X
MIA5K`*D)K$@1I"^DTZJ,(]`_H(8Z(P&_S6Z/UM6VJT627V,AGZ92U?E47E,I
M;J.FHT-BJC:=/#QA0IMBSH(!::#_SHC*],/8)!-()A]5S4[U%LFOWK+[@U+P
M?%"ME?P!U4FU=JR[/D_'YU/"#P>'21*3UQ"X(TU]=#.E/T?1.4S7$`45"&R
MJ4BBDHPE^R<RB4V2:)*2J8*"Y$@`(HQ"$1@UD7G]D$U5#D=54VP(K@YJZSK
M4.=U;HBHQ*&(0_U`@:]7LC?9[.;HG$SHR]@(`@'A@)C:[=3Q0Q,RV@2(FNB,
M9'$1;;*=0[++&55)C'+2<QQKF'(2<YSKPV,2K&9'5R2ILH[V`2D`,3[4KR8V
M03YMITLAF=2B3VQV*5EL%IM=44U6!*O:![:)*E<%88%1-PZ`3*%#DB8-*?HD
M^YJRP015YF*Q60(U5$]`"L1RW_N&2D&!6%>K!IW9I>^.J+(?`+D_MT:!5(,+
M1O3'8(FV^;7E4UW2B&J1VJZO)S4KL*TKH@W)#5,M/A7%-N=&J:Z`GXL!I(Q
M?]8$JDOJC%Q$GLQD:JEH>6#EJ*HGPJ7^""OJ@+)R,`658C9!F"G;1$C-KLJ
M1V&!HU)D,$H3#2)TRR1,9]=F5(FO.]+1)75T]D2:<H9D&50=ZPA8T4L675
M0,JI>H=>C!`;$P5!$Q!$!0"IK05ZE7?HX3%!P#4J3=6V%C&";6A.&LQ0;Q$#
M@_Z<',5O4LK1=/(%Y[3I*`IZ?$&;/6K/MKI:`FPQ-S&,T-.@!N=8C`,J`=`(
MJ-%(-):E-.?%B#0H1:4A495#$>H;#86Y5PPM)CGUJK[)NR&8$&8D!W8<P@-
MIJHX;3<&5UVMX=?1X!?8[7-L,:F7.KJ25+F44XC`G85T126FPV;??3_2PI
M_;")84=K^SF9DF6ZEX?HMDU*[0-)J2O2HDE#!7G(MIO.58PZ<$=W6UTM%+.V
ME(0/=*9D?*"K)W+1!-?)`]V1<P037ZPMFEH$O,A%$<X*C4HHE1(I(E*$:EH'
MB%Z3MUV4$4IH7%8C:/CF";AX=U7`AI&FR=(EF::HQ&@L5F:K-%H@U4J'8(8
M0_T.B`-T?1Z,#B5C49KCJ`0B`E^L8JD5HB.UIC#1%:CYTF";:I#:*-U+Z=XL
M74?I/&0&+L%UM;N3IH!TK;1..]#I8_[7S8@YVV=LN8:$[%WE[=VG?S+WGHW-
M/*G?R@<1O<C,W3]A'-ZNP;Y].G9V.SO]5O_QXTVCWP$I^T=<%;_%4JR<;2>
M-",!KJM+`'Y,PU^DOTE0+9S^[^`$?I\3/Z%B3!_IFG*P^M0-SH,=UH"OP5<
MJ`=.^^>X--R*22I/_C'FZ36G"L_)C.#V#SY@-(/SUWZ*Q4_QM5"-+%2
M(_R[LEBXJCB%OND]TXO7:Z;WI^NPT9_BG#RJ%?WQ?$8SO8_E]I43X[:0B
MO#UY97)ZDI$G/<N42:54^/M55+_L(H)7%,^#TF(QC?%=XE6B?_=:E->?LO
M(_2+<*?AZJ$'_ZX1LA<Q*&)D8G$!$-_#68FBMV*<,%[8>V%X0M[+IRX</8"
M/W+NY#GU'&,AX^^BM57L?%5K#>^XGUE^A4FH1Y5B:JFU<LJXSKK/4M.OJR^
M3-(O7WZ9N,YXSY`3+^'TBY=?)&M/CYFKM/#I]XG3G-/G-D1`ZCH>?PF\
MA9]2*H1O'9LO[#DV?BQSC&EX7'Z<)!['(^.)<7)T'*?'+X^3M8?[#@?9KZI
M9(03C^#]^Y8(8W&O$`</AN]M$>Y5&H5R7!HNY2&>03UH'/,>#UP7.GLD38
MT!,4>N`]SUT<YB`FK)L)#S/8R'@9,MV9Z21R9V.3(G<Z:I2WY>X0;E=$(0@Z
M5-S5L%7E&F%)!1<XK:&S=@8-KF-8;A$A3'"@F#T&ON,>XRLT>@RKC4.&>-
M5XP9(^%VK21&48X48(Y/(&/IKJ[G,Z."3X#AS(?VJ#B`ZJCB_9R9X^J.Z"B
M<,^&2`KCQZ*/'#F"VBHZ5'=71(U51#O4`0!D"B0`,%6D2E!;="P^MM-)&X"
M:,SIC,<IA"GFS/(T"#OCP`:Q^%@<D+&=*.Z,C^%X?`S%QX`>QQL!CL<I.8YA
M!#QQ9U8]:`#%&T$!=&-9U?$XR,=A?+QT(Z3?P,9VEW["F5N9'-T<F5A;0IE
M;F1O8FH*."`P(&]B:@H@("`S.38S"F5N9&]B:@HY(#`@;V)J"CP("],96YG
M=&@@,3`@,"!2"B`@("]&:6QT97(@+T9L871E1&5C;V1E"CX^"G-T<F5A;0IX
MG%V0OV[$(`S&=Y["XW4XD41-FR&*5%V7#/VCIGT``B9%:@`1,N3M:^!TE3J`
M?;?!]C,CZ/UD3@[')"2-H8U7`S>U!(LRX&,OJ!I219KE7:[",T[FZ=@B
MKJ/5CO4]`J;C$<<'I2;L8[!@#+2@,QBYP^KI,Y6C:O?_!%6V$B@T#*-1T
MW8OPKV)%X-E'A7533S.9/M3?!X>H<EY7;XDG<+-"XE!V`597U4#]%H/#*WZ
M5^N*8];R6P36MTE95118_R`S4R"N"]?$C_>9*1"+PB)INJ+I$K>%VZ1IBJ;)
M[U]?2C])([NU*/<0J+LU]Q6:LA8O(W>.Y]<>?T"8DM_WPIE;F1S=')E86T*
M96YD;V)J"C$P(#`@;V)J"B`@(#(V,`IE;F1O8FH*,3$@,"!O8FH*/#P@+U1Y
M<&4@+T9O;G1$97-C<FEP=&]R"B`@("]&;VYT3F%M92`O6%!*2U-2*TQI8F5R
M871I;VY386YS"B`@("]&;VYT1F%M:6QY("A,:6)E<F%T:6]N(%-A;G,I"B`@
M("]&;&%G<R`S,@H@("`O1F]N=$)";W@@6R`M,C`S("TS,#,@,3`U,"`Y,3`@
M70H@("`O271A;&EC06YG;&4@,`H@("`O07-C96YT(#DP-0H@("`O1&5S8V5N
M="`M,C$Q"B`@("]#87!(96EG:'0@.3$P"B`@("]3=&5M5B`X,`H@("`O4W1E
M;4@@.#`*("`@+T9O;G1&:6QE,B`W(#`@4@H^/@IE;F1O8FH*-B`P(&]B:@H
M/"`O5'EP92`O1F]N=`H@("`O4W5B='EP92`O5')U951Y<&4*("`@+T)A<V5&
M;VYT("]84$I+4U(K3&EB97)A=&EO;E-A;G,*("`@+T9I<G-T0VAA<B`S,@H@
M("`O3&%S=$-H87(@,3(R"B`@("]&;VYT1&5S8W)I<'1O<B`Q,2`P(%(*("`@
M+T5N8V]D:6YG("]7:6Y!;G-I16YC;V1I;F<*("`@+U=I9'1H<R!;(#`@,"`P
M(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@
M,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P
M(#8V-B`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#`@,"`P(#4U-B`P(#`@
M,"`U-38@,"`P(#4U-B`P(#`@,"`R,C(@,"`P(#`@,"`P(#,S,R`P(#(W-R`P
M(#`@,"`P(#`@-3`P(%T*("`@("]4;U5N:6-O9&4@.2`P(%(*/CX*96YD;V)J
M"C$@,"!O8FH*/#P@+U1Y<&4@+U!A9V5S"B`@("]+:61S(%L@,B`P(%(@70H@
M("`O0V]U;G0@,0H^/@IE;F1O8FH*,3(@,"!O8FH*/#P@+U!R;V1U8V5R("AC
M86ER;R`Q+C$U+C$P("AH='1P.BO8V%I<F]G<F%P:&EC<RYO<F<I*0H@("`O
M0W)E871I;VY$871E("A$.C(P,3DP,S`U,#0Q,C$P*S`Q)S`P*0H^/@IE;F1O
M8FH*,3,@,"!O8FH*/#P@+U1Y<&4@+T-A=&%L;V<*("`@+U!A9V5S(#$@,"!2
M"CX^"F5N9&]B:@IX<F5F"C`@,30*,#`P,#`P,#`P,"`V-34S-2!F(`HP,#`P
M,#`U.#`V(#`P,#`P(&X@"C`P,#`P,#`T-#(@,#`P,#`@;B`*,#`P,#`P,#,S
M,R`P,#`P,"!N(`HP,#`P,#`P,#$U(#`P,#`P(&X@"C`P,#`P,#`S,3$@,#`P
M,#`@;B`*,#`P,#`P-3,Y,2`P,#`P,"!N(`HP,#`P,#`P-C<T(#`P,#`P(&X@
M"C`P,#`P,#0W,S$@,#`P,#`@;B`*,#`P,#`P-#<U-"`P,#`P,"!N(`HP,#`P
M,#`U,#DR(#`P,#`P(&X@"C`P,#`P,#4Q,34@,#`P,#`@;B`*,#`P,#`P-3@W
M,2`P,#`P,"!N(`HP,#`P,#`U.3@X(#`P,#`P(&X@"G1R86EL97(*/#P@+U-I
M>F4@,30*("`@+U)O;W0@,3,@,"!2"B`@("]);F9O(#$R(#`@4@H^/@IS=&%R
1='AR968*-C`T,0HE)45/1@H`
`
end






errors environments






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 30 at 23:06







U. Windl

















asked Mar 28 at 7:13









U. WindlU. Windl

1698




1698







  • 1





    LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

    – Johannes_B
    Mar 28 at 7:30






  • 1





    It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

    – moewe
    Mar 29 at 4:53






  • 1





    Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

    – moewe
    Mar 29 at 4:56







  • 1





    the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

    – David Carlisle
    Mar 29 at 7:41






  • 1





    @U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

    – David Carlisle
    Mar 30 at 23:02













  • 1





    LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

    – Johannes_B
    Mar 28 at 7:30






  • 1





    It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

    – moewe
    Mar 29 at 4:53






  • 1





    Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

    – moewe
    Mar 29 at 4:56







  • 1





    the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

    – David Carlisle
    Mar 29 at 7:41






  • 1





    @U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

    – David Carlisle
    Mar 30 at 23:02








1




1





LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

– Johannes_B
Mar 28 at 7:30





LaTeX detects it. Exactly when the document ended and B was never finished. How is it supposed to detect it earlier? It does not have a human brain.

– Johannes_B
Mar 28 at 7:30




1




1





It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

– moewe
Mar 29 at 4:53





It is not that people don't (want to) believe what you write. It's the fact that in some (many?) situations the issue you describe does not occur (as demonstrated in the answer), so your situation must be special and people need to see code that actually reproduces the problem to be able to help.

– moewe
Mar 29 at 4:53




1




1





Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

– moewe
Mar 29 at 4:56






Note for example that if I complete the code at the beginning of the question to a working example with documentclassarticle newenvironmentAAA newenvironmentBBB begindocument beginA endA beginB endA enddocument TeX says ! LaTeX Error: beginB on input line 11 ended by endA. on l.13 and thus gives a good error message. But if I say newenvironmentBbeginAendA instead, I get ! LaTeX Error: beginB on input line 11 ended by enddocument.. This is what you have in your second example code.

– moewe
Mar 29 at 4:56





1




1





the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

– David Carlisle
Mar 29 at 7:41





the new code produces a different error ! Package pdftex.def Error: File """Platzhalter".pdf' not found: using draft setting` really the idea is you make a minimal example that produces the error that you are asking about, but I'll fix that this time.

– David Carlisle
Mar 29 at 7:41




1




1





@U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

– David Carlisle
Mar 30 at 23:02






@U.Windl I already fixed your example not to require a figure which was not necessary to demonstrate the error that you were asking about. If you have a question that does need a figure, you can use example-image which is in tex distributions for such tests but here I simply deleted the includegraphics

– David Carlisle
Mar 30 at 23:02











1 Answer
1






active

oldest

votes


















9














Please always post actual test documents not untestable fragments. In general latex would detect that error at the



endA


but there are cases when it can not, for example if B was verbatim then by definition all processing is disabled until endB is seen, in which case that error would only be detected at end of file.



so



documentclassarticle

begindocument

beginempty

endempty

beginquad

endempty


enddocument


produces an error message on line 11



! LaTeX Error: beginquad on input line 9 ended by endempty.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.11 endempty


but



documentclassarticle

begindocument

beginempty

endempty

beginverbatim

endempty


enddocument


Produces an error at end of file



Runaway argument?
^^M^^Mendempty^^M^^M^^Menddocument^^M
! File ended while scanning use of @xverbatim.
<inserted text>
par
<*> bb469

?



looking at the specific example provided, note that tex is a macro expansion system not a compiler it never parses the full document in advance.



so starting from



begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab
enddocument


after the first few expansions of gfxTableCap you have



begingfxTableCapLabplrCaption%
endgfxTableCapLab
enddocument


so the explicit endgfxTableCapLab in your document closed the inner environment, but the outer gfxTableCap is never closed and that can not be detected until the closing of a containing group which is enddocument here.






share|improve this answer

























  • Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

    – U. Windl
    Mar 28 at 7:58







  • 3





    @U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

    – David Carlisle
    Mar 28 at 8:05











  • OK, I will add my environments, but I wanted to avoid showing you this ugly code.

    – U. Windl
    Mar 29 at 1:54











  • @U.Windl I extended the answer to cover the code you posted.

    – David Carlisle
    Mar 29 at 7:56











Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481844%2fdetect-begin-end-mismatch-or-ending-what-you-did-not-begin%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









9














Please always post actual test documents not untestable fragments. In general latex would detect that error at the



endA


but there are cases when it can not, for example if B was verbatim then by definition all processing is disabled until endB is seen, in which case that error would only be detected at end of file.



so



documentclassarticle

begindocument

beginempty

endempty

beginquad

endempty


enddocument


produces an error message on line 11



! LaTeX Error: beginquad on input line 9 ended by endempty.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.11 endempty


but



documentclassarticle

begindocument

beginempty

endempty

beginverbatim

endempty


enddocument


Produces an error at end of file



Runaway argument?
^^M^^Mendempty^^M^^M^^Menddocument^^M
! File ended while scanning use of @xverbatim.
<inserted text>
par
<*> bb469

?



looking at the specific example provided, note that tex is a macro expansion system not a compiler it never parses the full document in advance.



so starting from



begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab
enddocument


after the first few expansions of gfxTableCap you have



begingfxTableCapLabplrCaption%
endgfxTableCapLab
enddocument


so the explicit endgfxTableCapLab in your document closed the inner environment, but the outer gfxTableCap is never closed and that can not be detected until the closing of a containing group which is enddocument here.






share|improve this answer

























  • Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

    – U. Windl
    Mar 28 at 7:58







  • 3





    @U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

    – David Carlisle
    Mar 28 at 8:05











  • OK, I will add my environments, but I wanted to avoid showing you this ugly code.

    – U. Windl
    Mar 29 at 1:54











  • @U.Windl I extended the answer to cover the code you posted.

    – David Carlisle
    Mar 29 at 7:56















9














Please always post actual test documents not untestable fragments. In general latex would detect that error at the



endA


but there are cases when it can not, for example if B was verbatim then by definition all processing is disabled until endB is seen, in which case that error would only be detected at end of file.



so



documentclassarticle

begindocument

beginempty

endempty

beginquad

endempty


enddocument


produces an error message on line 11



! LaTeX Error: beginquad on input line 9 ended by endempty.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.11 endempty


but



documentclassarticle

begindocument

beginempty

endempty

beginverbatim

endempty


enddocument


Produces an error at end of file



Runaway argument?
^^M^^Mendempty^^M^^M^^Menddocument^^M
! File ended while scanning use of @xverbatim.
<inserted text>
par
<*> bb469

?



looking at the specific example provided, note that tex is a macro expansion system not a compiler it never parses the full document in advance.



so starting from



begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab
enddocument


after the first few expansions of gfxTableCap you have



begingfxTableCapLabplrCaption%
endgfxTableCapLab
enddocument


so the explicit endgfxTableCapLab in your document closed the inner environment, but the outer gfxTableCap is never closed and that can not be detected until the closing of a containing group which is enddocument here.






share|improve this answer

























  • Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

    – U. Windl
    Mar 28 at 7:58







  • 3





    @U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

    – David Carlisle
    Mar 28 at 8:05











  • OK, I will add my environments, but I wanted to avoid showing you this ugly code.

    – U. Windl
    Mar 29 at 1:54











  • @U.Windl I extended the answer to cover the code you posted.

    – David Carlisle
    Mar 29 at 7:56













9












9








9







Please always post actual test documents not untestable fragments. In general latex would detect that error at the



endA


but there are cases when it can not, for example if B was verbatim then by definition all processing is disabled until endB is seen, in which case that error would only be detected at end of file.



so



documentclassarticle

begindocument

beginempty

endempty

beginquad

endempty


enddocument


produces an error message on line 11



! LaTeX Error: beginquad on input line 9 ended by endempty.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.11 endempty


but



documentclassarticle

begindocument

beginempty

endempty

beginverbatim

endempty


enddocument


Produces an error at end of file



Runaway argument?
^^M^^Mendempty^^M^^M^^Menddocument^^M
! File ended while scanning use of @xverbatim.
<inserted text>
par
<*> bb469

?



looking at the specific example provided, note that tex is a macro expansion system not a compiler it never parses the full document in advance.



so starting from



begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab
enddocument


after the first few expansions of gfxTableCap you have



begingfxTableCapLabplrCaption%
endgfxTableCapLab
enddocument


so the explicit endgfxTableCapLab in your document closed the inner environment, but the outer gfxTableCap is never closed and that can not be detected until the closing of a containing group which is enddocument here.






share|improve this answer















Please always post actual test documents not untestable fragments. In general latex would detect that error at the



endA


but there are cases when it can not, for example if B was verbatim then by definition all processing is disabled until endB is seen, in which case that error would only be detected at end of file.



so



documentclassarticle

begindocument

beginempty

endempty

beginquad

endempty


enddocument


produces an error message on line 11



! LaTeX Error: beginquad on input line 9 ended by endempty.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.11 endempty


but



documentclassarticle

begindocument

beginempty

endempty

beginverbatim

endempty


enddocument


Produces an error at end of file



Runaway argument?
^^M^^Mendempty^^M^^M^^Menddocument^^M
! File ended while scanning use of @xverbatim.
<inserted text>
par
<*> bb469

?



looking at the specific example provided, note that tex is a macro expansion system not a compiler it never parses the full document in advance.



so starting from



begingfxTableCap[p]lrCaptionlabel2%
endgfxTableCapLab
enddocument


after the first few expansions of gfxTableCap you have



begingfxTableCapLabplrCaption%
endgfxTableCapLab
enddocument


so the explicit endgfxTableCapLab in your document closed the inner environment, but the outer gfxTableCap is never closed and that can not be detected until the closing of a containing group which is enddocument here.







share|improve this answer














share|improve this answer



share|improve this answer








edited Mar 29 at 7:55

























answered Mar 28 at 7:50









David CarlisleDavid Carlisle

498k4111441893




498k4111441893












  • Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

    – U. Windl
    Mar 28 at 7:58







  • 3





    @U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

    – David Carlisle
    Mar 28 at 8:05











  • OK, I will add my environments, but I wanted to avoid showing you this ugly code.

    – U. Windl
    Mar 29 at 1:54











  • @U.Windl I extended the answer to cover the code you posted.

    – David Carlisle
    Mar 29 at 7:56

















  • Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

    – U. Windl
    Mar 28 at 7:58







  • 3





    @U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

    – David Carlisle
    Mar 28 at 8:05











  • OK, I will add my environments, but I wanted to avoid showing you this ugly code.

    – U. Windl
    Mar 29 at 1:54











  • @U.Windl I extended the answer to cover the code you posted.

    – David Carlisle
    Mar 29 at 7:56
















Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

– U. Windl
Mar 28 at 7:58






Probably more a comment than an answer. As for the test document: I typed it from memory as I don't have the document here, and the document actually is way to large to present here. I'm trying to extract a test case (hopefully) to demonstrate the problem. What I can say for now is that my environment messes with floats.

– U. Windl
Mar 28 at 7:58





3




3





@U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

– David Carlisle
Mar 28 at 8:05





@U.Windl I think this is the full answer in the generality that you asked the question. If you ask about the end parsing for a specific environment that would be a different question and of course need a slightly different answer.

– David Carlisle
Mar 28 at 8:05













OK, I will add my environments, but I wanted to avoid showing you this ugly code.

– U. Windl
Mar 29 at 1:54





OK, I will add my environments, but I wanted to avoid showing you this ugly code.

– U. Windl
Mar 29 at 1:54













@U.Windl I extended the answer to cover the code you posted.

– David Carlisle
Mar 29 at 7:56





@U.Windl I extended the answer to cover the code you posted.

– David Carlisle
Mar 29 at 7:56

















draft saved

draft discarded
















































Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481844%2fdetect-begin-end-mismatch-or-ending-what-you-did-not-begin%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

Tähtien Talli Jäsenet | Lähteet | NavigointivalikkoSuomen Hippos – Tähtien Talli

Do these cracks on my tires look bad? The Next CEO of Stack OverflowDry rot tire should I replace?Having to replace tiresFishtailed so easily? Bad tires? ABS?Filling the tires with something other than air, to avoid puncture hassles?Used Michelin tires safe to install?Do these tyre cracks necessitate replacement?Rumbling noise: tires or mechanicalIs it possible to fix noisy feathered tires?Are bad winter tires still better than summer tires in winter?Torque converter failure - Related to replacing only 2 tires?Why use snow tires on all 4 wheels on 2-wheel-drive cars?