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)vloení čí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í poloek 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}}}% smae
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