LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Mime-Version:
1.0
Content-Type:
text/plain; charset=iso-8859-1
Date:
Fri, 24 Apr 2009 11:21:20 +0200
Content-Disposition:
inline
Reply-To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Subject:
From:
Heiko Oberdiek <[log in to unmask]>
In-Reply-To:
Content-Transfer-Encoding:
8bit
Sender:
Mailing list for the LaTeX3 project <[log in to unmask]>
Parts/Attachments:
text/plain (76 lines)
On Fri, Apr 24, 2009 at 03:03:08PM +0930, Will Robertson wrote:

> On 21/04/2009, at 8:30 PM, Uwe Lück wrote:
> 
> >I wonder whether this is a bug that should go to the LaTeX Bug  
> >Database, since it only
> >-- is about an internal
> >-- contradicts what one might expect
> >-- while it is not clear to me whether this can affect LaTeX's  
> >function on the user-level
> 
> This certainly seems like a bug to me, although I had to modify your  
> examples to see the error:
> 	
> 	\documentclass{article}
> 	\begin{document}
> 	\makeatletter
> 	\in@{bonbon}{bon}\ifin@ YES\else NO\fi  % gives YES
> 	\in@{bonbon}{bonb}\ifin@ YES\else NO\fi % gives NO
> 	\in@{client-to-client}{client-to}\ifin@ YES\else NO\fi  % gives NO
> 	\in@{client-to-client}{client-to-}\ifin@ YES\else NO\fi % gives YES
> 	\makeatother
> 	\end{document}
> 	
> The tendency seems to be not to change the internals of LaTeX2e, but  
> I'd be happy to replace the current implementation of \in@ with a more  
> correct version. What do others think?

I don't see any sense in preserving such a silly bug.

> If others are amenable to the  
> change, would you be willing to write the new version?

\catcode`\@=11 %
\def\@empty{}% (for testing with plain-TeX)

%%% begin of fixed definition %%%
\def\in@#1#2{%
  \def\in@@##1#1##2\in@@{%
    \def\in@@{##2}%
    \ifx\in@@\@empty
      \in@false
    \else
      \in@true
    \fi
  }%
  \in@@#2\@nil#1\in@@
}
%%% end of fixed definition %%%

\newif\ifin@

\def\test#1#2#3{%
  \in@{#1}{#2}%
  \edef\@result{%
    \ifin@ yes\else no\fi
  }%
  \def\@expected{#3}%
  \immediate\write16{%
    [\string\in@{#1}{#2} = \@result\space] => %
    \ifx\@result\@expected OK.\else FAILED!\fi
  }%
}

\test{bonbon}{bon}{no}
\test{bon}{bonbon}{yes}
\test{bona}{bon}{no}
\test{bon}{bona}{yes}
\test{ionization}{ionizat}{no}
\test{client-to-client}{client-to-}{no}

\csname @@end\endcsname\end

Yours sincerely
  Heiko <[log in to unmask]>

ATOM RSS1 RSS2