Portál AbcLinuxu, 7. května 2025 09:52

Dotaz: LaTeX - nastavení šířky mezery mezi dvěma obrázky

otula avatar 13.7.2020 01:35 otula | skóre: 45 | blog: otakar | Adamov
LaTeX - nastavení šířky mezery mezi dvěma obrázky
Přečteno: 800×
Odpovědět | Admin
Příloha:
Potřeboval bych poradit s jednou záležitostí v LaTeXu. Potřebuji příkaz, který mi vloží vedle sebe 2 obrázky tak, aby měly stejnou výšku, zabíraly spolu celou šířku textu a byla mezi nimi mezera, kterou nastavím. (V příloze je ukázka, jak to asi má vypadat, přičemž tu mezeru potřebuji nastavit přesně.)

Nazvěme ho například \dvaobrazky.

Mohu ty obrázky například vložit do resizeboxu, nastavit jim stejnou výšku, vložit mezi ně mezeru a roztáhnout to na celou šířku, asi takto:
\newcommand{\dvaobrazky}[2]{
	\resizebox{\linewidth}{!}{
		\includegraphics[height=10cm]{#1}
		\hskip10pt
		\includegraphics[height=10cm]{#2}
	}
} 
což dá výsledek podobný požadovanému, ale velikost mezery se mění spolu s boxem, takže je to k ničemu.

Potom jsem přemýšlel, že bych si mohl všechno sám spočítat a naskládat vedle sebe, tedy obrázek1, pružná mezera, obrázek2. Spočítal bych společnou výšku, na kterou bych obrázky nastavil: výška=b1/(a1+a2*b1/b2) * (\linewidth - požadovaná mezera) (a1/a2 jsou šířky obrázků, b1/b2 výšky obrázků). Nevím ale, jak získat ty fyzické rozměry obrázků a jak to naskládat do LaTeXu, aby mi to spočítal.

A možná existuje ještě jiné, mnohem prostější, řešení…
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 (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (otula (tazatel))
13.7.2020 09:31 tttttt
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
Odpovědět | | Sbalit | Link | Blokovat | Admin
V plain TeXu jsem šířku počítal takto:
\newbox\logobox
\setbox\logobox=\putepdf{height 17mm}{../logo/logo.epdf}
…
\hsize=\wd\logobox
Počítat jde pomocí \advance, \multiply, \divide.a
otula avatar 13.7.2020 17:22 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
Velikosti se mi podařilo získat, ale mám problém při tom počítání. Sčítání, odčítání v pohodě, ale ve chvíli, kdy chci násobit či dělit, mám problém. Předpokládám, že to bude kvůli tomu, že počítám s délkovými jednotkami a v okamžiku násobení či dělení nepracuji jen s čísly, ale i s těmi jednotkami délky...
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
otula avatar 13.7.2020 19:57 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
A ještě jsem našel a vyzkoušel tohle v lualatexu:
\newcommand\mycalc[1]{\directlua{tex.sprint(#1)}}
Příkaz \mycalc{} potom vytiskne přímo výsledek včetně desetinných míst, ale pokud do něj zadám dělení délkových jednotek, kde by se měly jednotky pokrátit a vyjít číslo, také to nefunguje...
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Řešení 1× (otula (tazatel))
13.7.2020 20:19 tttt
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
To je pravda, s délkami to nefunguje. Na stackoverflow píšou, že délky jdou počítat v LaTeXu takto:
\documentclass{article}
\newlength\A
\newlength\B
\newlength\C
\setlength\A{10pt}
\setlength\B{5pt}
\setlength\C{\dimexpr \numexpr \A * \A / \B \relax sp\relax}
\begin{document}
\the\C
\end{document}
Zdroj: https://tex.stackexchange.com/questions/372022/divide-two-lengths
otula avatar 13.7.2020 21:12 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
Děkuji, jak budu mít čas, tak na to zase mrknu.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
otula avatar 13.7.2020 23:20 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
Tak super, funguje to, moc děkuji.

Takhle nějak jsem to postupně splácal s kontrolními výsledky a jak zbude zase čas, tak to budu muset přepracovat do použitelné podoby. Nevím, zda tam mám vše korektně, ale funguje to…
\newlength{\sirkaa}
\newlength{\vyskaa}
\newlength{\sirkab}
\newlength{\vyskab}
\newlength{\vyska}
\newlength{\delitel}
\newlength{\sirkaradku}

\begin{document}

\lipsum[1]

\sirkaradku=\linewidth
\advance\sirkaradku -7pt %mezera mezi obrázky 7pt

\newbox\logobox
\setbox\logobox=\hbox{\includegraphics{example-landscape.jpg}}

\sirkaa=\wd\logobox
\vyskaa=\ht\logobox

\setbox\logobox=\hbox{\includegraphics{example-portrait.jpg}}
\sirkab=\wd\logobox
\vyskab=\ht\logobox

% delitel=sirkaa+sirkab*vyskaa/vyskab
\setlength\delitel{\dimexpr \numexpr \sirkab * \vyskaa / \vyskab + \sirkaa \relax sp\relax}


% vyska=vyskaa/delitel*sirkaradku
\setlength\vyska{\dimexpr \numexpr \vyskaa * \sirkaradku / \delitel \relax sp\relax}


\noindent\includegraphics[height=\vyska]{example-landscape.jpg}\hfill\includegraphics[height=\vyska]{example-portrait.jpg}

sirkaa \the\sirkaa

vyskaa \the\vyskaa

sirkab \the\sirkab

vyskab \the\vyskab

dělitel \the\delitel

šířka řádku \the\sirkaradku

\textbf{cílová výška \the\vyska}

\end{document}

Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
18.7.2020 14:31 Zvedavec
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
A co hezkeho pises ? :)
otula avatar 18.7.2020 21:44 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: LaTeX - nastavení šířky mezery mezi dvěma obrázky
Kdo se moc ptá, moc se dozví. ;-) Chci překopat jeden místní zpravodaj, který vypadá šíleně, tak jsem prvně jen tak zkoušel, jak by to šlo v LaTeXu, aby se dalo maximum předprogramovat. Myslím, že to nakonec bude docela fajn, abych to mohl zodpovědné osobě nabídnout.
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.