Dnia 2012-03-09, o godz. 09:41:13
Jacek Kmiecik <
j...@agh.edu.pl> napisał(a):
> On Fri, 9 Mar 2012, Marcin Borkowski wrote:
>
> >> Chcę to koszernie, poleceniami LaTeX-a... bo chyba można względnie
> >> prosto?!
> >
> > Hm - raczej wątpię. Jedyne znane mi rozwiązanie (poza trikami z
> > lualatexem, gdzie pewnie to się też daje zrobić) to właśnie environ
> > (no i narzędzia verbatimopodobne, ale to odrobinę - ale chyba tylko
> > odrobinę;) - inna bajka). I nie jest to zadanie trywialne.
> >
> > Jeśli wiesz, że wewnątrz nie będzie innego środowiska, to pewnie da
> > się to zrobić przy użyciu delimited arguments - ale to jest imho
> > dalekie od koszerności (i podatne na błędy).
>
> No to mnie nieco zaskoczyłeś... wydawało mi sie to proste, a tylko
> moja niewiedza lansuje kiepskie rozwiązania. Wychodz na to, ze
> jeednak trzeba sięgnąć do czegoś zewnątrz.
>
> > A co Ci się nie podoba w pakiecie environ? Jest w każdej rozsądnej
> > dystrybucji, ostatnia wersja jest z 2008 roku, więc nie wymaga
> > "krwawiącego ostrza", autorem jest nie byle kto, bo Will Robertson z
> > LaTeX3 teamu...
>
> OK! przyglądnę się temu... Liczę wszelako na trywialne rozwiązanie
> plain/latexem ;)
No oczywiście mógłbyś zrobić coś takiego jak
\def\env#1\end{...}
Szybkie zerknięcie na source2e.pdf pokazuje, że to mogłoby działać.
Tyle, że:
* nie miałbyś kontroli, czy zostało zamknięte właściwe środowisko -
musiałbyś robić to sam w makrze \env;
* gdybyś w \begin{env} ... \end{env} chciał móc zawierać inne
środowiska, miałbyś problem: trzeba by np. sprawdzać, co jest po
\end, i ewentualnie pociągnąć dalej zabieranie tokenów (do następnego
\end);
* tak więc - jakkolwiek pewnie dałoby się to zrobić - byłoby to dalekie
zarówno od trywialności, jak i koszerności.
Pakiet environ, mimo, że też można uznać, że niekoszerny (zdaje mi
się, że stosuje metody verbatimowate), jednak jest w jakimś sensie (jak
pisałem) standardowy, no i ktoś już za nas odwalił ciężką robotę
napisania go;).
Nadal jestem ciekaw, jak by to wyglądało w luatexu/ConTeXcie.
Last but not least: pytałeś na TeX.SE?