Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 13. 5. 2016 08:04:47

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

styl písma pouze v části buňky obsahující vzorec

Dobrý den. Mám takový problémek. Rád bych ve vícejazyčném textu, kde se jazyk mění automaticky dle nějaké vnější volby, použil index. Jde o to že text je výsledkem funkce. Používám Index(odkaz do slovníku). Na konec bych chtěl připojit index, což bude značit odkaz na poznámky pod čarou. Čili výsledek bude "Základní ceník(1)" resp. "Basic price plan(1)" přičemž (1) coby index.

Trochu si myslím že to není možné, tak jen mi potvrďte prosím že to fakt nejde :-) (spokojil bych se i s jiným stylem než indexem - stačilo by menší písmo.) Díky.


LibreOffice 6.2.

Offline

#2 13. 5. 2016 08:23:26

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

Pokud se mění jazyk automaticky není potřeba něco dělat. Stačí volat index - tedy číslo které se nepřekládá a vede stále stejným směrem. Problém může být jen s textem v ceníku a s případným přepočtem. Někde jsem viděl makro, které lokalizuje jazyk ale asi jsem si ho nepoznamenal (nepotřeboval jsem ho).
     Stačí ale asi jen dotaz na text ovládacího prvku, respektive hyperlinku a podobně. Také bych možná doporučil jesště jiné řešení, ačkoliv to máte možná přímo už zabudované.


     Jedná se o to, že ovládací prvky mají verzování pro lokalizaci. Takže když zobrazíte výstup do ovládacího prvku, bude v angličtině (nebo v jiném jazyce). Samozřejmě to vyžaduje paralelní soubor překladu, ale pak to máte bez problémů.


     Ještě bych možná doporučil postavit vše v základním jazyce angličtina a udělat alternativní překlad do češtiny. Jde totiž o to, že když to otevře například japonec, a podobně tak se mu zobrazí jako výchozí právě angličtina a ne čeština.
      Trošku problém by mohl být přepočet ceny. Ta by ale z principu měla být zřejmě postavena na dolar, nebo euro a k tomu udělat koment. Viděl jsem také natagovaný přepočet - jde ale o script. Ten se automaticky přepočítal z výchozí měny na měnu uživatele. Tto řešení je ale mimo rámec ODF (je to nejspíš JavaScript ale v rámci HTML5, PHP, nebo něco podobného). Teoreticky by to mělo jít napumpovat do Calcu přizpůsobením. Jsou na to ale různé knihovny a ta musí být nejprve  definována, nebo přepsána. Někdy by se dal najít přímý převod - podobně jako ty debilní dotazy na ARES. To byste ale musel dohledat sám.

Editoval neutr (13. 5. 2016 08:24:13)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 13. 5. 2016 08:53:36

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

Možná jsem dotaz nepoložil správně - jde mi o to aby na konci textu psaného nějakou velikostí písma byl "horní index" (nebo dolní to je celkem jedno, případně jen menší písmo) v rámci jedné buňky, přičemž text je výsledkem vzorce (tedy nikoli přímo zadávaný). Jde o grafiku, o nic jiného.


LibreOffice 6.2.

Offline

#4 13. 5. 2016 10:34:30

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

To je problém. Myslím že jsem viděl makro, ale nevím jestli nebylo jen pro Writer. Potíž je v tom, že se editace indexu dělá v editaci buňky - takže neplatí pro celou buňku.
     Další věc je v tom, že se může použít vzorec "STYLE", ale ten se primárně sčítá s jinými čísly - má hodnotu nula takže o nic nejde. Bohužel - do textové podoby jako výstupu ze vzorce jsem se vůbec nedostal. Je zle hned jak zadám & nebo plus. Objeví se buď chyba, nebo se k uvozujícímu textu připíše nula. AOO je na tom ještě hůř.
     Když v LO zadáte =STYLE("horní") - tak uvidíte že je písmo zarovnané hnahoru, ale aby to bylo vidět musíte zmenšit font - z desítky třeba na 7 a podobně. Pak je to vidět, že to funguje a dokonce bez povinné syntaxe, která určuje Výchozí styl. Tohle u AOO nefunguje.


     Testoval jsem, jestli se to může nahrát záznamníkem - a jde to. Je tam ale příkaz bez jakékoliv deklarace a načíst jen část řetězce jako "select" UNEM nejde... :
dispatcher.executeDispatch(document, ".uno:SuperScript", "", 0, Array())
     Takže to co je vybráno - stane se horním indexem a jinak máme smůlu. Ale právě proto si myslím, že jsem viděl úpravu stylů písma na Japonském serveru - už jsem ho tady několikrát uváděl, ale nejsem doma tak nyní z hlavy nevím. Byly tam ale všechny možné hovadiny jako nadtržení, podtržení několika druhy šar, jejich barvy, styly písma a prostě plno věcí které jsem snad ani nepoužil.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 13. 5. 2016 12:45:53

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

Tak jsem našel metodu jak by to mohlo jít. Jde o to, že text v buňce je přístupný (úryvek z OpenOffice.org Basic Programmer's Guide str. 152: "Cell Properties. There are numerous options for formatting cells, such as specifying the font type and size for text. Each cell supports the com.sun.star.style.CharacterProperties and com.sun.star.style.ParagraphProperties services, the main properties of which are described in Chapter 6 (Text Documents)." )

Tuším tedy že by šla vytvořit funkce, která část textu ovlivní a zbytek textu nechá dle formátování buňky, ale problém je že s ovládáním textu makrem nemám absolutně žádné zkušenosti. Máte někdo radu jak na to?


LibreOffice 6.2.

Offline

#6 13. 5. 2016 13:59:06

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

Já souhlasím že by to mělo jít naformátovat vzorcem. Problém je v tom že by to musela být pro Vaše zadání relace textových funkcí. Pak by to mělo vypadat nějak třeba jako :
CHARFORMAT(RIGHT(ABC1;XY);"HorníIndex"), nebo spíš
CHARFORMAT(MID(ABC1;XY,ZZ);"HorníIndex"), respektive vícenásobné formátování jako kurzíva, Bold, barva, podtržení a další. To už se ale blíží editoru vzorců.


     Bohužel vzorec STYLE se mi nepodařilo uspokojivě implementovat možná právě proto že se chová jako číslo a ne jako znak. Navíc zřejmě umí formátovat jen celou buňku.


     Napadá mne jen jakési optické vytvoření podobného spojení. Když do jedné buňky dáte základní text a zarovnáte doprava, pak ve vedlejší buňce zadáte text zarovnaný nahoru a doleva spolu s menším fontem. Potom jsou opticky spojeny - samozřejmě při vypnuté mřížce. Můžete tam dát místo mžížky rámečky aby to vypadalo....
     Ale stejně i tak by v indexu musely být na indexu čísla, nebo předem naformátované například podmínkou. Podmíněné formátování funguje dobře na vše - i na text. Takže to je nejlepší postup ale není to přímo vzorcem.


     No a to makro by se mělo udělat tak jak popisuji - ze sešitu by se měl volat vzorec kterým se aktivuje funkce. Takže tan hypotetický CHARFORMAT() lze sestrojit jako funci. Ta se ovšem musí distribuovat se sešitem aby to fachalo.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 13. 5. 2016 14:04:59

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

Funkce CHARFORMAT by byla super, sám ji však určitě nezvládnu, s textem jsem v životě nepracoval. Řešení dvoubuňkové je silně emezující, zejména pak ve vícejazyčném dokumentu. (Doteď jsem to měl jen česky tak jsem ani vorce neřešil, formátováno byla přímo v buňce, jak je to i anglicky, tak je potřeba dělat takové kejkle)


LibreOffice 6.2.

Offline

#8 13. 5. 2016 14:07:59

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

Večer budu doma a pohledám. Nechci nic slibovat ale jestli najdu tak to bude během zítřka.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 13. 5. 2016 14:44:55

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 806

Re: styl písma pouze v části buňky obsahující vzorec

Tak ten index vkládejte při psaní.

V buňce vyberte potřebný text / číslo a ctrl-shift-P, můžete i dobarvit. Případně můlžete použít ikonky v bočním panelu.

Text se musí vybrat v buňce.

Offline

#10 13. 5. 2016 15:01:59

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

to LP: to ve vzorcích nefunguje. Raději napíšu jak to mám konkrétně:

=INDEX(slovnik!$B$1:$C$300;12;$N$2)&" (1)"

a hledám způsob jak text "(1)" zobrazit jako "horní index" přičemž výsledek funkce INDEX bude formátován dle buňky nebo jinak dle nějakého zadání


LibreOffice 6.2.

Offline

#11 14. 5. 2016 19:21:40

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

Tak jsem na to došel. Je to vlastně velice jednoduché. Sice systém tvorby horního indexu neznám, ale lze jej také najít mezi symboly resp. speciálními znaky (všechna čísla a matematické značky jako dolní i horní indexy). Takže vzorec může vypadat třeba takto:

=INDEX(dictionary!$B$1:$C$300;12;$N$2)&UNICHAR(8317)&UNICHAR(185)&UNICHAR(8318)

graficky to není tak zdařilé jako u "klasicky" formátovaného indexu, ale spokojil jsem se. Ještě jsem si upravil funkci (upravenou LP) na náhradu diakritiky a mám hotovo. Akorát si holt člověk musí trochu pohrát s těmi okrajovými znaky, závorky chr(8317) resp. 8318 je posazena výše než čísla, tak to nevypadalo moc dobře.

REM FUNKCE MakeIndex(TEXT) vytvoří horní index ze zadaného čísla mezi dvěma svislými čarami

Function MakeIndex (stext as string)
	Dim i as integer
	
	number = array("0", "1","2","3","4", "5", "6","7", "8",  "9")
	h_index = array(186,185,178,179,8308,8309,8310,8311,8312,8313)
	
	For i = lbound(number()) to ubound(number())
		stext = Replace(stext, number(i), chr(h_index(i)))
	Next i
	MakeIndex = chr(32) & chr(7477) & stext & chr(7477)
End Function

Samozřejmě obecnější funkce na úpravu části textu v buňce by bodla, ale už to tak nehoří. Na anglickém fóru nějaký náznak proběhl, dalo by se to vytvořit, ale není to zdaleka tak snadné :-)


LibreOffice 6.2.

Offline

#12 14. 5. 2016 22:42:33

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

Tak jsem hledal půl dne a nic pořádného jsem nenašel. Původní makro jsem sice našel ale nechodí. Takže jsem upravil jako nouzovku klasický vzorec. Pokud se Vám bude líbit dodělám to tak aby to byla i podmínka. Zatím je to jen "vložení dvou textů" - druhý je jako horní index. Ovšem má to ještě hodně k dokonalosti.


     Ve výsledku to ale není na první pohled rozeznat. Podívejte se tohle Pokus horní index


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#13 15. 5. 2016 08:23:19

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 561

Re: styl písma pouze v části buňky obsahující vzorec

Moc děkuji, ale toto je pro mne nepoužitelné. Je to sice vzorec ale jen jednorázový, takže není zřejmě schopen dynamické proměny. Nejsem si jist zda je toto cesta. Spíše se mi líbí to co dal jakýsi uživatel zde https://forum.openoffice.org/en/forum/d … p?id=24779 Je to sice obarvování písmenek, ale stejným způsobem, by se možná dala řešit i změna velikosti a pozice (či další vlastnosti) části textu v buňce a celé to předělat na funkci.


LibreOffice 6.2.

Offline

#14 15. 5. 2016 09:54:55

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: styl písma pouze v části buňky obsahující vzorec

To co se Vám líbí podle Vašeho odkazu myslím nic z toho co potřebujete neřeší. V podstatě je to jen efektní vybarvení písma celého textu. Pokud by Vám stačilo vybarvení bez gradientu tak stačí zadat podmíněným formátem určitou barvu písma - ale pro celý řetězec. V tom je ten problém.
     Nejde do jedné buňky sloučit dva druhy formátování ať už je to index, nebo písmo ve smyslu velikosti nebo barvy.


     Jakmikle by se mi podařilo nastavit "editační mód" buňky - tedy když výběr části textu zmodrá, tak bych tam dokázal dát vše od indexu až po polární záři nebo pohyblivý text.
     Podobné efekty jsou bezproblémové (nebo téměř) pro writer, ale ne pro Calc. Při tom manuální editace funguje takže by to mělo jít i naprogramovat makrem. To nejde ale nevím z jakého důvodu. Na fórech se tomuto problému všichni vyhýbají. To co fungovalo dříve nyní nefunguje. Je možné že takévé úpravy považují vývojáči za zbytečné.
     V Calcu LO by to mělo jít stejně jako ve Writeru - tedy plná manipulace s řetězcem. Rozdíl je jen v tom, že Writer pracuje s celým dokumenten ale Calc jen s malou sekvencí (buňkou). Rutiny jsou hotové ale pro Calc nejsou implementovány. Nejspíš někdy v budoucnu.


      Tedy jde to ještě nějak jinak - nepřímo přes vložení textového rámce který by měl umět aktualizovat lépe nežli vzorec Modulu Math.
      Ono by to mělo jít aktualizovat i pro vzorec - při změně podmínky se musí původní DrawPage smazat a podle vyhodnocení znovu vytvožit správnou.


      Nejsnadnější řešení by bylo pomocé 4 buněk. V levé dolní základní text a v pravé horní ten který má být jako index. Jenomže to by fungovalo perfektně jenom pro jeden vzorec (nebo stejné délky základních textů). Lze to i vytvořit jako sloučené miniaturní buňky (šířka sloupce jako má jeden znak). Ale to už je asi super opičárna.
      Dalším řešením by byly poznámky nebo speciální pole - nejlépe textový rámec nezávislý na přednastavených parametrech (jako tabulka 2x2) naformátované do jediného řádku.

Editoval neutr (15. 5. 2016 10:13:24)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí