Portál AbcLinuxu, 29. května 2024 23:24


Dotaz: definice příkazu v LaTeXu bez složených závorek

otula avatar 4.6.2020 17:22 otula | skóre: 45 | blog: otakar | Adamov
definice příkazu v LaTeXu bez složených závorek
Přečteno: 460×
Odpovědět | Admin
Chtěl bych se zeptat zkušenějších uživatelů, zda se dá v LaTeXu nadefinovat příkaz tak, aby jeho parametr nemusel být ve složených závorkách, ale zpracoval se celý odstavec (a právě jen ten jeden, další odstavce už by zůstaly tímto příkazem nedotčeny). Například budu mít nadefinovaný příkaz podpis, který mi vypíše text kurzívou zarovnanou doprava.
\def\podpis#1{\begin{flushright}\textit{#1}\end{flushright}}
Když chci poté tento příkaz použít, musím komplikovaně zadat
\podpis{Jenda Novák \\ ředitel zeměkoule}
Lze to udělat tak, abych pro stejný výsledek mohl zadat následující? A pokud ano, tak jak?
\podpis Jenda Novák \\ ředitel zeměkoule
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.6.2020 23:36 kelidas | skóre: 7
Rozbalit Rozbalit vše Re: definice příkazu v LaTeXu bez složených závorek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podobně jako je \textit{bude kurzívou} vs modal command {\itshape bude kurzívou}

\def\podpis{\flushright\itshape}

Samozřejmě je vhodné modifikovaný text uzavřít do skupiny {} nebo ho použít uvnitř nějakého prostředí i pokud bude použit na konci dokumentu.

{\podpis Jenda Novák \\ ředitel zeměkoule}
otula avatar 5.6.2020 00:17 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: definice příkazu v LaTeXu bez složených závorek
Děkuji za odpověď, ale ono mi to nepomůže. Důležité bylo, aby ten příkaz fungoval právě pro ten jeden daný odstavec. Jde prakticky o to, že když mám hromadu textu a chci ho upravovat, tak je velmi rychlé a snadné prsknout na začátek odstavce nějaký příkaz a jít dál. Ale ve chvíli, kdy je potřeba doplňovat na konec ještě uzavírací závorku, tak to šíleně zdržuje a komplikuje úpravy.

Proč, sakra, je tohleto v LaTeXu o tolik komplikovanější než v plain TeXu? V něm to jde krásně (použije se eoldef):
\chyph
\input opmac
\eoldef\podpis #1{{\hfill\it #1}}

\sec Jeden nadpis
\secc Menší nadpis

\begitems
* odrážka
* další odrážka
\enditems

\secc Další malý nadpis

hromada textu

\podpis Pepa z Depa

A zase další text
\bye
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Řešení 1× (otula (tazatel))
5.6.2020 02:10 tttt
Rozbalit Rozbalit vše Re: definice příkazu v LaTeXu bez složených závorek
LaTeX je akorát hromada TeXových maker, ne? Tedy to, co jde v TeXu by mělo jít v LaTexu. Makro eoldef je definované v opmac, čekal bych, že půjde vytáhnout a použít.

\def\eoldef#1{\def#1{\begingroup \catcode`\^^M=12 \eoldefA#1}%
   \expandafter\def\csname\string#1:M\endcsname}
{\catcode`\^^M=12 \gdef\eoldefA#1#2^^M{\endgroup\csname\string#1:M\endcsname{#2}}}

Poku to dobře čtu, nepracuje se s koncem odstavce, ale koncem řádku, což nemusí být totéž. Konec řádku se pomocí catcode předefinuje na běžný znak a pak se používá jako argument v makru.
otula avatar 5.6.2020 06:19 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: definice příkazu v LaTeXu bez složených závorek
Mea culpa, nenapadlo mě si to tam najít. Děkuji.

Ano, není to totéž. Ale v daném kontextu to nevadí. I když zrovna s tím zalomením řádku už to nefunguje, to jsem nějak předtím nevyzkoušel, ale to už se dá překousnout...
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.