Obtekani obrazku

Vasek Skrivan vskr6537 at artax.karlin.mff.cuni.cz
Thu Jun 6 23:01:08 CEST 2002


Dobry den,
  pri psani potrebuji obcas vkladat do textu priklad s obrazky a k nemu
se vztahujici otazky. Abych mel jednotnou strukturu takto zadavanych
prikladu, vytvoril jsem si prikazy \priklad{text prikladu} -- pro vkladani
prikladu, \obr{\includegraphics....} a pro podotazky prostredi typu
list -- casti (vsechny jou prilozeny na konci).
 Pokud vlozim v zadani prikladu obrazek, text prikadu ho obteka, pokud
je  odstavec dostatecne dlouhy, aby ho obtekl cely. Pokud je kretsi, tak
umim zase pomoci jednoducheho prikazu \odsad{pocet radku} zkratit prvnich
par radek, aby obrazek byl obtekan cely.
  Pokud vsak obsahuje prikad i vypis casti, tak toto prostredi uz obrazek
prepisuje.  Umim nastavit prostedi tak, aby bylo po cele delce vyctu
zuzeno  o sirku obrazku. Ja vsak chci, aby byla zuzena jen takova cast, u
ktere je to potreba -- jen dany pocet radku a zbytek byl tisten na celou
sirku  stranky.
  Zatim to delam ruzcne, coz je trochu nepohodlne. Pokud byste nekdo mohl
poradit, jak toto delat automaticky zmenou v definici prikazu, budu
moc rad.

Za vsechny rady predem dekuji
Vasek Skrivan

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% zadávání příkladů:
\newcounter{prik}%          % zavedení nového čítače pro číslování
příkladů
\renewcommand{\theprik}{\arabic{prik}}% příklady se budou číslovat arabsky
\newlength{\sirka}%              % zavedeni sirkoveho rozmeru pro cislo
%                                % prikladu
\newcommand{\priklad}[1]{%      % novy prikaz \priklad s 1 parametrem -
%                               % - zadáním
      \refstepcounter{prik}%      % vynulování čítače pro číslování
příkladů
\global\settowidth{\sirka}{\textbf{\large \theprik~x}}%
%                                %vlozi do sirka_cisla sirku cilsa
prikladu
%                                % a mezery za nim
   \par%                         % novy odstavec
    \setlength{\parindent}{-\sirka}%
     \leftskip=\sirka%
     \textbf{\large \theprik)}~%   % vloží se do textu číslo příkladu
    #1%            % a vytisni příklad
    \par%          % a novy odstavec
    \setlength{\leftskip}{0pt}%
}%           %konec nového příkazu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%3)vložení číslování podotázek příkladů typu a), b) atd.
\newcounter{cast}           % zavedení nového čítače pro číslování
                            % částí příkladů
\newenvironment{casti}{ % začátek nového prostředí
    \begin{list}        % formát obecného výčtového rostředí
        {\alph{cast})}     % označení čítače
        {               % začátek definovani rozmeru
        \usecounter{cast}   % spojí čítač část i item
        \addtolength{\leftmargin}{5mm} % změtší odsazení od leva o 5mm
%        \addtolength{\rightmargin}{\odsad}
%         \addtolength{\rightmargin}{15mm}
       \setlength{\topsep}{1.5 mm}       % odsazení textu výčtu od textu
                                       % nad ním
        \setlength{\parskip}{0ex plus 0.5ex minus 0.2ex} % změna řádkování
                                                % uvnitř výčtu
        \setlength{\partopsep}{0mm}     % odsazení od textu nad výčtem
        \setlength{\parsep}{0mm}%       % mezery mezi odstavci ve výčtu
        \setlength{\itemsep}{0mm}%      % odsazení položek výčtu
        }               % konec zmeny rozmeru
        }               % konec definice, co bude dělat na začátku
                        % prostředí text
        {\end{list}}    % co bude prostředí dělat na konci
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%4)vkládání obrázků
\newlength{\odsad}% rozměr pro šířku obrázku
\newlength{\kles}% rozměr pro šířku obrázku
\newlength{\hloubkaobr}% rozměr pro šířku obrázku
\newlength{\sirkaobr}% rozměr pro šířku obrázku
\newlength{\vyskaobr}% rozměr pro délku obrázku
\newcount\radky%        rozměr pro počet řádků
\newcount\vyskaradku%    rozměr pro výšku řádků
\newbox\obrbox%       % box do ktereho se obrazek vlozi
\newcommand{\obr}[1]{% příkaz pro vkládání obrázků
\setbox\obrbox=\hbox{#1}% vytvoření a naplnění boxu s obrázkem,
%                                    % jde o horizontální box
\global\sirkaobr=\wd\obrbox%       % vloží hdnotu šířky boxu
%                              % do rozměru šířky
\vyskaobr=\ht\obrbox%       % vloží hdnotu délky boxu
%                              % do rozměru šířky
\addtolength{\sirkaobr}{2mm}% zvětší hodnotu \sirka obr, aby byl
%                               % text dále od obrázku
\vyskaradku=\baselineskip%  % vloží vzdálenost 2řádků do výšky řádků do
\radky=\vyskaobr%           % vloží výšku obrázku pro výpočet počtu řádků
\addtolength{\radky}{\vyskaradku}%
\divide\radky by\vyskaradku%  % vypočítá počet řádků jako podíl
\radky/\výška řádků
\addtolength{\radky}{-1}%      % sníží počet řádek o 1 (odsazením od spodu
o 1 řádek)
\kles=\radky\baselineskip%     % okolik řádek níž se bude tisknout obrázek
\setlength{\odsad}{\linewidth}%
\addtolength{\odsad}{-\sirkaobr}%
   \addtolength{\odsad}{2mm}%
\leftskip=\odsad%
\leavevmode%
\vadjust{\noindent\smash{\hbox to0pt{\lower\kles\box\obrbox\hss}}}% smaže
hbox, poklesne o správný počet řádek
%                        % a naplní box
\leftskip=\sirka%
\addtolength{\radky}{2}%       % zvýší počet řádek o 1 %
\noindent%
\hangindent-\sirkaobr%         % okoli se bode zkracovat řádka o začátku
\hangafter -\radky%            % odsadí od začátku odstavce tolik radek
%\hspace*{-3ex}
\ignorespaces%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%odsazení dalších odstavců
\newcommand{\od}[1]{% příkaz pro vkládání obrázků
   \noindent%
   \hangafter -#1%            % odsadí od začátku odstavce tolik radek
   \hangindent -\sirkaobr%         % okoli se bode zkracovat řádka o
začátku
}









More information about the csTeX mailing list