[cstex] ako prepisat kod do makra s 2 parametrami
Kuben Jaromír
jaromir.kuben at unob.cz
Sun Jul 4 16:30:01 CEST 2021
Dobrý den.
Ani po odstranění zřejmých chyb v definici příkazu \skus, které uvádí
pan Wagner, to však nefunguje. Hlásí to chybu (jak jste sám zjistil)
Runaway argument?
! Paragraph ended before \verbatim at start was complete.
<to be read again>
\par
l.41 \skus{prikaz}{vysledok}
atd.
Důvod je zřejmě možné nalézt v dokumentaci k balíčku verbatim.sty. Na
str. 3 jsou uvedena omezení. Druhé z nich říká:
You cannot use the verbatim environment inside user defined commands;
e.g.,
\newcommand{\verbatimfile}[1]%
␣␣␣␣␣␣␣␣␣␣␣{\begin{verbatim}\input{#1}\end{verbatim}}
does not work; nor does
\newcommand{\verbatimfile}[1]{\verbatim\input{#1}\endverbatim}
Protože okolí com a res použitá v těle (opravené) definice příkazu \skus
právě tohle dělají, uvedená konstrukce zřejmě není možná.
Vámi zmiňované konstrukce
\newcommand{\skus}[2]{#1}{
a
b) \newcommand{\skus}[2]{#1#2}{
nedávají smysl, jak už psal pan Wagner. Doporučuji podívat se do nějaké
příručky LaTeXu na syntaxi příkazu \newcommand.
Základ popsal pan Wagner. To, co bude v té další otevřené závorce, tj.
\setlength\topsep{-5pt}
\definecolor{shadecolor}{rgb}{1, .49, .5}
\begin{com}
#1
\end{com}
\definecolor{shadecolor}{rgb}{.66, .66, .9}
\begin{res}
#2
\end{res}
nepatří k definici a bude prováděno jedinkrát v místě definice, tj.
zřejmě před \begin{document}, a vyvolá chybu.
Váš první příkaz \newcommand{\skus}[2]{#1} má dva argumenty a jeho tělo
je #1, takže při volání \skus{prikaz}{vysledok} opíše argument prikaz a
ignoruje argument vysledok.
Váš druhý příkaz \newcommand{\skus}[2]{#1#2} má dva argumenty a jeho
tělo je #1#2, takže při volání \skus{prikaz}{vysledok} opíše vedle sebe
argumenty prikaz a vysledok.
Rozhodně se na argumenty prikaz a vysledok nebude aplikovat konstrukce,
kterou byste si přál.
Zdraví
Jaromír Kuben
Dne 4. 7. 2021 v 15:54 peter knezel napsal(a):
> Dobry den pan Wagner,
>
> vdaka za pripomienky. Prepisal som tex subor:
>
> \documentclass{article}
>
> \usepackage{framed,color,verbatim}
>
> %...define color of command background for next environment
>
> \newenvironment{com}%
>
> {\snugshade\verbatim}%
>
> {\endverbatim\endsnugshade}
>
> \newenvironment{res}%
>
> {\snugshade\verbatim}%
>
> {\endverbatim\endsnugshade}
>
> \newcommand{\skus}[2]{
>
> \setlength\topsep{-5pt}
>
> \definecolor{shadecolor}{rgb}{1, .49, .5}
>
> \begin{com}
>
> #1
>
> \end{com}
>
> \definecolor{shadecolor}{rgb}{.66, .66, .9}
>
> \begin{res}
>
> #2
>
> \end{res}
>
> }
>
> \begin{document}
>
> \skus{prikaz}{vysledok}
>
> \skus{prikazx}{vysledokx}
>
> \\
>
> Vzor - priamo zapisany text
>
> \setlength\topsep{-5pt}
>
> \definecolor{shadecolor}{rgb}{1, .49, 0.0}
>
> \begin{com}
>
> line one
>
> \end{com}
>
> \definecolor{shadecolor}{rgb}{.66, .66, .66}
>
> \begin{res}
>
> res line one
>
> res line two
>
> res line two
>
> \end{res}
>
> text pisany za tabulkou.
>
> \end{document}
>
> konci chybou:
>
> )
>
> Runaway argument?
>
> vysledok \end {res}
>
> ! Paragraph ended before \verbatim@ was complete.
>
> <to be read again>
>
> \par
>
> l.28 \skus{prikaz}{vysledok}
>
> a) aspon nieco dostanem na vystupe - aj ked zly vysledok, ak pouzijem
> v 14. riadku:
>
> \newcommand{\skus}[2]{#1}{
>
> alebo:
>
> b) \newcommand{\skus}[2]{#1#2}{
>
> S pozdravom,
>
> PeterKnezel
>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20210704/2a73af9b/attachment-0001.htm>
More information about the csTeX
mailing list