[cstex] Symboly horního a dolního integrálu

Kuben Jaromír jaromir.kuben at unob.cz
Thu Apr 7 12:06:22 CEST 2011


Dobrý den.

Potřeboval jsem předloni horní a dolní integrál (i dvojný, trojný a vícenásobný), a protože jsem nic nenašel,
pokusil jsem se vyrobit si něco, co by slušně vypadalo ve všech matematických modech a bez problémů
fungovaly i meze (u jednoduchého integrálu používám jen variantu s \nolimits, druhá možnost se mi nelíbí).
Ladil jsem to sice na Math Times, ale zdá se, že to vypadá slušně i CM resp. LM fonty.
Verze pro jednoduchý integrál vypadá takto (pro vícerozměrné jsem to dělal jinak, kupodivu
to bylo jednodušší):

\documentclass[11pt,b5paper,twoside,pdftex]{report}
\usepackage[IL2]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}

\newcommand{\dint}{\mathchoice%
         {\mathrlap{\mkern3mu\lower 1.9ex\hbox{$\displaystyle\underline{\mkern6mu}$}}}%
         {\mathrlap{\mkern3mu\lower .65ex\hbox{$\textstyle\underline{\mkern5mu}$}}}%
         {\mathrlap{\mkern3mu\lower .45ex\hbox{$\scriptstyle\underline{\mkern5mu}$}}}%
         {\mathrlap{\mkern3mu\lower .4ex\hbox{$\scriptscriptstyle\underline{\mkern5mu}$}}}%
         \int\nolimits }
\newcommand{\hint}{\mathchoice%
         {\mathrlap{\mkern13.8mu\raise 3.75ex\hbox{$\displaystyle\underline{\mkern6mu}$}}}%
         {\mathrlap{\mkern9mu\raise 2.5ex\hbox{$\textstyle\underline{\mkern5mu}$}}}%
         {\mathrlap{\mkern9mu\raise 1.75ex\hbox{$\scriptstyle\underline{\mkern5mu}$}}}%
         {\mathrlap{\mkern9mu\raise 1.355ex\hbox{$\scriptscriptstyle\underline{\mkern5mu}$}}}%
         \int\nolimits }

%Z TUGboat, Volume 22 (2001),  No. 4, str. 350
\def\clap#1{\hbox to 0pt{\hss#1\hss }}
\def\mathllap{\mathpalette\mathllapinternal}
\def\mathrlap{\mathpalette\mathrlapinternal}
\def\mathclap{\mathpalette\mathclapinternal}
\def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}}
\def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}}
\def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}}

\newcommand{\dx}{\mathrm{d}\mkern1mu x}

\begin{document}

$\dint_a^b f(x)\,\dx, \int_a^b f(x)\,\dx, \hint_a^b f(x)\,\dx$

\[
\dint_a^b f(x)\,\dx, \int_a^b f(x)\,\dx, \hint_a^b f(x)\,\dx
\]

\end{document}

________________________________________
Odesílatel: cstex-bounces+jaromir.kuben=unob.cz at cs.felk.cvut.cz [cstex-bounces+jaromir.kuben=unob.cz at cs.felk.cvut.cz] za uživatele petr zemánek [petr.zemanek at gmail.com]
Odesláno: 6. dubna 2011 18:08
Komu: cstex at cs.felk.cvut.cz
Předmět: Re: [cstex]    Symboly horního a dolního integrálu

Dobrý den,
ten třetí návrh vypadá dobře - dá se nějak hýbat s umístěním mezí u
integrálu (myslím především vertikálně)?
________________________________________________

Nikdy jsem necítil pořebu meze vertikálně posouvat, zdá se mi, že umístění je stejné jako u \int.
Myslím si, že varianta s \limits vypadá divně, je to příliš roztažené (u vícerozměrných integrálů
jsem to ovšem dělal přesně naopak, protože se mi to tak líbí).

Pokud jde o mezeru mezi znakem integrálu a tou čárkou, líbila by se mi možná trochu menší,
ale to je potíž. Je dělána pomocí primitivu \underline, který si tu mezeru bere z dimenzí fontu.
V Olšákově TeXbooku naruby se píše:

\underline <math field>   [m]
Vytvoří nový atom třídy Under, obsahující v základu math field . Tento atom
bude sázen s čarou pod základem. Čára bude mít tloušťku t = \fontdimen8
fontu rodiny 3 odpovídajícího stylu. Pod čarou je ještě mezera velikosti t a
mezi čarou a spodním okrajem základu atomu je mezera velikosti 3t. Viz též
\overline.

Uvažoval jsem o lokálním předefinování tohoto rozměru, ale pak jsem to vzdal.
A udělat si vlastní náhradu \underline, kde bych si to nastavil, jsem nedokázal.
Naznal jsem, že výsledek vypadá dobře i tak.

Zdraví
             Jaromír Kuben
_______________________________________________________

S pozdravem Petr Zemánek.

On 6 dub, 14:26, "Pavel Striz" <st... at fame.utb.cz> wrote:
> Posílám jisté nečisté vzorky, ten třetí by se dal ponastavovat, jak by bylo třeba.
> PS
>
> -----
> \documentclass{article}
> \usepackage[intlimits]{amsmath}
> \usepackage{calc}
> \begin{document}
>
> \begin{equation}
> \underline{\overline{\int}}_{\overline{a}}^{\underline{b}} f
> \end{equation}
>
> \begin{equation}
> \int_{\overline{a}}^{\underline{b}} f
> \end{equation}
>
> \setbox0=\hbox{$\int$}
> \begin{equation}
> \raisebox{-\ht0-\dp0+1.0pt}{\makebox[0pt][l]{\kern0.25\wd0\rule{0.75\wd0}{0 .5pt}}}
> \raisebox{\ht0+\dp0+3.5pt}{\makebox[0pt][l]{\kern1\wd0\rule{0.75\wd0}{0.5pt }}}
> \int\nolimits_{\hspace{0.5pt}a}^{\hspace{1.5pt}b} f(x)
> \end{equation}
> \end{document}
> -----
>
> -----Původní zpráva-----
> Od: cstex-bounces+striz=fame.utb... at cs.felk.cvut.cz [mailto:cstex-bounces+striz=fame.utb... at cs.felk.cvut.cz] za uživatele petr zemánek
> Odesláno: 6. dubna 2011 11:46
> Komu: cs... at cs.felk.cvut.cz
> Předmět: [cstex] Symboly horního a dolního integrálu
>
> Dobrý den,
> potřebuji vytvořit příkaz pro symboly dolního a horní integrálu.
> Našel
> jsem tento návod
>
> ====================================================
> \documentclass{report}
> \usepackage{localloc}
> % Ignore whitespace and make @ a letter
> %
> \endlinechar=-1
> \catcode`\ =9
> \makeatletter
> % Saves the current math style in \everymath, then expands its
> argument. The result is that
> % the math style is "saved", e.g., for use inside box commands.
> %
> % Ideally, this should append rather than assign.
> %
> \newcommand{\mathstyle}[1]{
> \mathchoice{\everymath={\displaystyle} #1}
> {#1}
> {\everymath={\scriptstyle} #1}
> {\everymath={\scriptscriptstyle} #1}
>
> }
>
> % upper integral symbol.
> %
> % Everything happens inside a group, so assignments and allocations
> are local.
> %
> \newcommand{\uint}{{
>         \mathstyle{
>             \lnewbox\intbox
>             \lnewdimen\intwd
> % obtain the width of \int. Since the typical integral symbol looks
> % roughly like a 45 degree line, we'll need to a line about half this
> width.
> %
> \setbox\intbox=\hbox{\m at th$\int$}
> \intwd=\wd\intbox
> \divide \intwd by 2\relax
> % Setting \baselineskip to 1pt gives us 1pt of space between the line
> and \int.
> %
> % We need to use \moveright, to get the line in the right place
> (hence
> the
> % \hrule must be inside a \vbox).
> %
> \vbox{
> \baselineskip=1pt
> \moveright \intwd \vbox{\hrule width \intwd}
> \hbox{\m at th$\int$}}
>
> }}}
>
> % lower integral symbol.
> %
> \newcommand{\lint}{{
>         \mathstyle{
>             \lnewbox\intbox
>             \lnewdimen\intwd
>             \setbox\intbox=\hbox{\m at th$\int$}
>             \intwd=\wd\intbox
>             \divide \intwd by 2\relax
>            % This is a bit simpler, since we don't need \moveright.
>             \vtop{
>               \hbox{\m at th$\int$}
>               \vskip 1pt
>               \hrule width \intwd}
>
> }}}
>
> % Restore whitespace and @
> %
> \catcode`\ =10
> \endlinechar=`^^M
> \makeatother
> \begin{document}
>         $\int_a^b f$ $\uint_a^b f$ $\lint_a^b f$ $\int_a^b f$
>         $$\int_a^b f \uint_a^b f \lint_a^b f \int_a^b f$$
> \end{document}
> ==========================================================
>
> jenže ten výstup není příliš pohledný. Meze, u kterých není pruh,
> jsou
> příliš daleko od symbolu integrálu, a naopak u druhé meze je ten pruh
> příliš blízko symbolu meze. Můžete mi, prosím, pomoci s vytvořením
> kvalitnìjšího výstupu.
> S pozdravem Petr Zemánek.
> _______________________________________________
> csTeX mailing list
> cs... at cs.felk.cvut.czhttp://lists.felk.cvut.cz/mailman/listinfo/cstex

_______________________________________________
csTeX mailing list
csTeX at cs.felk.cvut.cz
http://lists.felk.cvut.cz/mailman/listinfo/cstex




More information about the csTeX mailing list