[cstex] Opakovani matematickych symbolu

Jaromír Kuben jaromir.kuben at unob.cz
Wed Nov 4 08:04:12 CET 2009


Dobry den.

Pouzivam rovnez makra p. Tkadlece. Vyrazne zjednodusuji a zprehlednuji
definovani symbolu a prikazu, ktere se maji opakovat.
Ale pri pouziti s novym ceskym/slovenskym definicnim souborem  pro babel
nastaly problemy s minus. Protoze sazim opravdu hodne matematiky, vadilo 
mi to.
Podarilo se mi vymyslet jakousi neumelou patch, nevim, jestli je to 
idealni a zcela korektni.
Vyuzil jsem pri tom kus kodu ze souboru czech.ldf p. Tesarika.
Nicmene funguje i v pomerne hodne komplikovanych matematickych textech,
zatim jsem nenarazil na problem. Rad bych, kdyby se na to podival nekdo 
znalejsi hlubin TeXu.
Zajemci si mohou vyzkouset, co pouzivam,  popr. doplnit dalsi symboly a 
prikazy.
Vse se da do preambule:

%Podle Tesaříkova czech.ldf
\makeatletter
\def\Deleni{%
  \ifx\protect\@typeset at protect
    \ifhmode
      \ifinner
        \bbl at afterelse\bbl at afterelse\bbl at afterelse\cs at hyphen
      \else
        \bbl at afterfi\bbl at afterelse\bbl at afterelse\cs at firsthyphen
      \fi
    \else
      \bbl at afterfi\bbl at afterelse\cs at hyphen
    \fi
  \else
    \bbl at afterfi\cs at hyphen
  \fi }
\makeatother

%Opakování symbolů binárních operací a relací při zalomení řádku
%Autor: Josef Tkadlec tkadlec at fel.cvut.cz

\relpenalty     =10000      % aby se nelámalo v jiných než ošetřených
\binoppenalty   =10000
\exhyphenpenalty=1000       % aby spíše nouzově (implicitně je 50)
                            % "lokálně" lze zakázat {...}

\def\neq {\mathrel{\not=}}  % aby nedocházelo k lámání \not=/=
\let\ne=\neq

\def\OpakujPrikaz #1#2{\let #2=#1
  \def #1{#2\nobreak\discretionary{}{\hbox{$#2$}}{}}}
\def\OpakujZnak #1#2{\mathchardef #2=\mathcode`#1
  \activedef #1{#2\nobreak\discretionary{}{\hbox{$#2$}}{}}
  \uccode`\~=0 \mathcode`#1="8000 }
%Doplnil Kuben pro nový czech.ldf,  \expandafter možná nemusí být
\def\OpakujZnakMinus #1#2{\mathchardef #2=\mathcode`#1
  \activedef 
#1{\ifmmode#2\nobreak\discretionary{}{\hbox{$#2$}}{}\else\expandafter\Deleni\fi 
}
  \uccode`\~=0 \mathcode`#1="8000 }
\def\activedef #1{\uccode`\~=`#1 \uppercase{\def~}}

\DeclareMathSymbol{\smallsetminus}{\mathbin}{AMSb}{"72}
\let\ssm\smallsetminus
\DeclareMathSymbol{\leqq}         {\mathrel}{AMSa}{"35}
\DeclareMathSymbol{\geqq}         {\mathrel}{AMSa}{"3D}

\OpakujPrikaz {\neq }{\neqORI}  \let \ne=\neq
%\OpakujPrikaz {\leq }{\leqORI}  \let \le=\leq
%\OpakujPrikaz {\geq }{\geqORI}  \let \ge=\geq
\OpakujPrikaz {\leqq}{\leqqORI}  \let \le=\leqq \let \leq=\leqq
\OpakujPrikaz {\geqq}{\geqqORI} \let \ge=\geqq  \let \geq=\geqq
\OpakujPrikaz {\cup }{\cupORI}
\OpakujPrikaz {\cap }{\capORI}
\OpakujPrikaz {\times }{\timesORI}
\OpakujPrikaz {\subset }{\subsetORI}
\OpakujPrikaz {\subseteq }{\subseteqORI}
\OpakujPrikaz {\supset }{\supsetORI}
\OpakujPrikaz {\supseteq }{\supseteqORI}
\OpakujPrikaz {\ssm }{\ssmORI}
\OpakujZnak <{\lessORI}
\OpakujZnak >{\greaterORI}
\OpakujZnak +{\plusORI}
\AtBeginDocument {\OpakujZnak ={\eqORI} \OpakujZnakMinus -{\minusORI}}

Zdravi
                Jaromir Kuben

RNDr. Ladislav Ševčovič wrote:

>dobry vecer,
>chcem vas upozornit aj na clanok od pana Tkadleca,
>ktory s touto problematikou suvisi:
>http://math.feld.cvut.cz/tkadlec/ftp/text/ooar.pdf
>Zpravodaj CSTUG 17(2007), č.2, 103–105
>
>s pozdravom
>              sevcovic
>  
>




More information about the csTeX mailing list