en English

CTUstyle

šablona pro sazbu
studentských závěrečných prací
na ČVUT

Petr Olšák, 2013--2021

ctustyle3-doc.pdf
ctustyle3 (Jen pro OpTeX)
ctustyle2-doc.pdf
ctustyle2.zip
ctustyle1-doc.pdf
ctustyle1.zip
slidy.pdf
example-ts.pdf

Podobná šablona
CUstyle
je určena
pro studenty
Karlovy univerzity

Tuto TeXovou šablonu mohou studenti všech fakult ČVUT použít (a používají ji) pro přípravu svých závěrečných (bakalářských, diplomových a disertačních) prací. Na některých fakultách ČVUT (FEL, FIT, možná dalších) je oficiálně zařazena mezi doporučené šablony. Pokud toto není případ Vaší fakulty, ověřte si, zda použití této šablony je v souladu s pravidly požadovanými Vaší fakultou nebo jaké je třeba splnit dodatečné požadavky. Například na FIT navíc chtějí toto.

Šablona generuje výstupní PDF pomocí TeXu (přesněji pdfTeXu nebo LuaTeXu), což znamená, že je třeba v textovém (programátorském) editoru připravit zdrojový text se značkami vymezujícími strukturu dokumentu a ten předložit TeXu k vygenerování PDF. Třebaže je problematika související s TeXem velice rozsáhlá, studenti při použití šablony nepotřebují moc znát TeX. Mohou používat „metodu analogie“: vidím, jak je vytvořen zdrojový text generující návod šablony a udělám analogický zdrojový text, který vygeneruje moji závěrečnou práci. Tímto přístupem zvládli použít šablonu už mnozí studenti bez předchozích znalostí TeXu.

V současné době (konec roku 2020) jsou k dispozici čtyři verze této šablony:

  • CTUstyle1 -- první verze používaná od roku 2013 s využitím pdfTeX, csplain, OPmac. Design je podle tehdy platného „starého“ typografického manuálu ČVUT. Návod včetně náhledu, jak práce v této šabloně vypadá je zde
  • CTUstyle2 -- druhá verze používaná od roku 2018 s využitím pdfTeX, csplain, OPmac. Design je podle „nového“ typograficého manuálu ČVUT. Způsob užití se nezměnil. Návod včetně náhledu, jak práce v této šabloně vypadá je zde
  • CTUstyle3 -- třetí verze zveřejněná v listopadu 2020 s využitím OpTeX. Upozornění: protože OpTeX je poměrně nový software (poprvé byl zveřejněn v alfa verzi v únoru 2020), je možné, že nebude v dostatečně nové verzi přítomen v TeXových a linuxových distribucích. Design vychází z CTUstyle2. Návod včetně náhledu, jak práce v této šabloně vypadá je zde
  • CTUthesis -- verze užívaná od roku 2014 pro LaTeX. Tuto verzi vytvořil a zveřejnil po dohodě se mnou Ing. Hejda (tohecz). Design vychází z CTUstyle1.

Všechny tři verze CTUstyle umožňují vytvořit ve stejném designu prezentaci pro zpětný projektor a diváky, viz slidy1, slidy2 a slidy3.

Podmínky pro provoz CTUstyle1 a 2: TeX, csplain ve verzi aspoň Nov. 2012, OPmac ve verzi aspoň Jul. 2013.

Podmínky pro provoz CTUstyle3: OpTeX ve verzi aspoň Oct. 2020, nebo použijte Overleaf.

Na Overleaf je připravena šablona CTUstyle3 k okamžitému použití. Stačí, když použijete tento odkaz a projekt (který tam vidíte pouze ke čtení) si zkopírujete (tj. naklonujete) do svého projektu.

Studentům, kteří použijí CTUstyle1,2 nebo 3, jsem připraven případně poradit na emailu, budou-li mít se šablonou nějaký problém. Některé dotazy a jejich řešení jsem shrnul níže do sekce FAQ.

Nechť vám šablona slouží.

Podmínky pro použití, sdílení, šíření a modifikování: stejné jako u makra OPmac.


Otázky a odpovědi

-- Jak dostat obrázky vedle sebe se společným popiskem?

Obrázky vedle sebe můžete umístit pomocí \centerline, například, jsou-li oba stejně velké:

\picw=.4\hsize
\clabel[obr.a+obr.b]{Popisek k obrázkům} % to dá popisek do seznamu obrázků
\centerline {\inspic obrazek1.jpg \hfil\hfil \inspic obrazek2.jpg }\nobreak
\centerline {a)\hfil\hfil b)}\nobreak\medskip
\caption/f Popisek ke dvěma obrázkům.

Příkaz \centerline vytvoří jeden řádek na šířku sazby, ale s pružnou mezerou \hfil na okrajích. Takže při šířce .4\hsize pro dva obrázky zbývá mezera .2\hsize, která se rozdělí na stejné čtyři díly: vlevo, dvakrát uprostřed a na konci, každá bude mít velikost 0.5\hsize. Taktéž v druhém řádku bude \hfil a)\hfil\hfil b)\hfil, tedy čtyři stejné mezery v řádku, které způsobí, že písmena a) a b) budou centrovat pod jednotlivými obrázky.

Za \centerline{} je \nobreak, aby se ty dva řádky nerozdělily do dvou různých stránek. A konečně za názvy obrázků *musí* být mezera, jinak se dočkáte nepříjemných chyb, při kterých nebude z hlášení zřejmé, že chybí mezera. Tj. je špatně:

\centerline{\inspic obrazek1.jpg\hfil\hfil \inspic obrazek2.jpg}\nobreak

Při různě velkých obrázcích je možné \picw=cosi vložit před každý \inspic zvlášť, třeba

\centerline {\picw=4.2cm \inspic obr1.png \hfil
             \picw=7.1cm \inspic obr2.png }\nobreak

-- Jak dostat obrázky vedle sebe, každý se svým popiskem?

Je možné obrázky zapouzdřit do \vtop při polovičním \hsize. Je ale bezpodmínečně nutné ukončit text \caption pomocí \par. Takže třeba:
\midinsert
\line{\hsize=.5\hsize \vtop{%
      \clabel[logo1]{Ukázka vložení prvního obrázku}
      \picw=4cm \cinspic ctulogo.pdf
      \caption/f Ukázka vložení obrázku vlevo.
   \par}\vtop{%
      \clabel[logo2]{Ukázka druhého obrázku}
      \picw=4cm \cinspic ctujinelogo.pdf
      \caption/f Ukázka obrázku.
   \par}}
\endinsert

-- Jak otočit tabulku o 90 stupňů a umístit ji samostatně na stránku?

Může se stát, že máte příliš rozsáhlou a zejména širokou tabulku, že se Vám nevejde do šířky stránky a napadlo Vás ji otočit o 90 stupňů a rezervovat pro ni celou stránku. Není to věc, nad kterou by typografové jásali, ale když opravdu není zbytí, můžete se ispirovat tímto kódem:

\topinsert 
\vskip-\topskip \hbox to0pt{\pdfsave\pdfrotate{90}\hss \vtop to\hsize{\hsize=\vsize \vss

\clabel[absolventiFEL]{Počet absolventů FEL}
  \ctable{lrrrrr}{
    \hfil number of       & 2007 & 2008 & 2009 & 2010 & 2011 \crl \tskip4pt
    students Bc. and Mgr. & 6313 & 5913 & 5951 & 5188 & 4737 \cr
    graduate Bc. and Mgr. & 1195 & 1489 & 1379 & 1160 & 1260 \cr
    students Ph.D.        &  457 &  468 &  366 &  395 &  434 \cr
    graduate Ph.D.        &   65 &   60 &   55 &   54 &   51 \cr
}
\caption/t Počet absolventů FEL ČVUT. Tabulka je převzata z~\cite[zyka].

\vss}\pdfrestore}\vskip-\hsize \vskip\vsize
\endinsert

-- Jak zmenšit písmo mezi \begtt a \endtt?

Někdy se výpis kódu zpracovaný mezi \begtt a \endtt na šířku nevejde do šířky sazby. Jde-li jen o malé přetečení, je možné mírně zmenšit písmo. Při velkém přetečení (např. dojnásobném) už není vhodné zmenšovat písmo na polovinu, ale je třeba hledat jiný způsob formátování.

Pokud chcete zmenšít písmo pro všechny výpisy v celé práci stejně, pak na začátek dokumentu pište:

\addto\tthook{\typosize[9/11]}

Formát parametru \typosize je [velikost-písma/vzdálenost účaří], v tomto případě bude velikost 9 a účaří 11 bodů. CTustyle nastavuje pro listingy defaultní hodnotu [10.5/13.6].

Pokud chcete zmenšit písmo jen u jednoho konkrétního výpisu kódu, pište těsně před \begtt:

\bgroup\addto\tthook{\aftergroup\egroup\typosize[9/11]}

Upozorňuji, že není typograficky vhodné v každém výpisu zvolit jinou velikost písma. Můžete třeba rozdělit výpisy na dva druhy, první se základní velikostí a druhý se zmenšenou velikostí. Ale více druhů už nedoporučuji.

-- Jak zařídit číslování rovnic ve formátu (kapitola.číslo)?

Za \input ctustyle stačí vložit

\def\thednum{(\the\chapnum.\the\dnum)}

-- Jak napsat stojaté \mu pro jednotku (např. mikroampér)?

Vzhledem k tomu, že se předpokládá použití \mu jako jednotky (tedy mimo matematický mód), navhuji použít makra, která zavádějí potřebné fonty ve varinatě \rm a \bf jen v textovém módu. Někam na začátek dokumentu napište:

\font\greekrm=eurm10
\font\greekbf=eurb10
\regfont\greekrm \regfont\greekbf
\def\micro{{\expandafter\ifx\the\font\tenbf \greekbf\else \greekrm\fi \char22 }}

A nyní můžete psát \micro A ve smyslu mikroampérů a {\bf funguje to i v tučné variantě: \micro A}. Pokud chcete mít jednotku v matematickém vzorci, je třeba použít hbox například takto:

$$
  \phi (\omega) = 15\ \hbox{\micro A}.
$$

-- Mám potíže s tiskem znaku <

Pokud překlad na tomto znaku zcela havaruje, pak jste asi omylem do svého dokumentu vložili definice ze začátku souboru popis.tex, které nastavují tento znak na aktivní a řeší speciální sazbu mezi dvojicí znaků < a >.

Ačkoli tam takové definice nemáte, znak < se správně vytiskne jako „menší než“ jen v matematickém módu, tj. mezi dolary. Upozorňuji, že v matematice se používá ještě znak \langle, který značí levou lomenou závorku a je vizuálně odlišný od znaku „menší než“. Pokud znak používáte v kontextu výpisu strojového kódu, dejte tomuto kódu strojopisný font, tj. {\tt<}. Přímé napsání znaku < typicky způsobí tisk jiného znaku (obráceného vykřičníku), protože Knuth se rozhodl pro několik znaků nedodržet ASCII kódování výchozího fontu pro TeX. Podrobněji viz sekci 3.7 TeXu pro pragmatiky.

-- Na terminálu se píše WARNING: unknown UTF-8 code a v textu je černý čtvereček

Pravděpodobně jste přetáhli myší text obsahující UTF8 znaky, kterým implicitně csplain nerozumí. Typicky to bývá nezlomitelná mezera nebo nejrůznější mršky čárečky. Nejjednodušší je na základě logu a místa, kde je černý čvereček, zjistit, co to je za znak, smazat ho ve zdrojovém textu a nahradit TeXovou sekvencí, která se v takovém případě typicky používá. Také je možné naučit csplain tyto znaky rozpoznávat. Následující příklad ukazuje, co se obevuje v logu při výskytu nezlomitelné mezery a non-ASCII apostrofu:

WARNING: unknown UTF-8 code: `  = ^^c2^^a0' (line: 17)
WARNING: unknown UTF-8 code: `' = ^^e2^^80^^99' (line: 42)

Chcete-li, aby tyto znaky uměl csplain rozpoznávat, povšimněte si UFF-8 kódů těchto znaků v logu a podle nich na začátku dokumentu deklarujte:

\mubyte\nbsp ^^c2^^a0\endmubyte   \def\nbsp{\nobreak\space}
\mubyte\apostrophe ^^e2^^80^^99\endmubyte   \chardef\apostrophe=39

Zde je nezlomitelná mezera realizovaná sekvencí \nbsp, která je definovaná jako nezlomitelná mezera TeXovsky, tj. \nobreak\space. Dále non-ASCII apostrof je realizován pomocí \apostrophe a je definován jako ASCII apostrof s kódem 39.

-- Jak psát stupně, minuty vteřiny?

Například 49$^\circ$15'38.761''N 14$^\circ$41'31.666''E. Pro symbol vteřiny použijte dva jednoduché apostrofy za sebou (dvojitý apostrof je vymezen na verbatim text v odstavci).

Pokud se vám zdá psaní stupně příliš kryptické, můžete si definovat chování odpovídajícího kódu z Unicode tabulky v záhlaví dokumentu třeba takto:

\mubyte\degree ^^c2^^b0\endmubyte
\def\degree{\leavevmode\hbox{$^\circ$}}

a v dokumentu pak psát jednoduše 49°15'38.761''N, 14°41'31.666''E.

-- Jak vynutit stránkový zlom?

V plainTeXu se používá příkaz \vfill\break. Ale užívání tohoto příkazu v dokumentu je nebezpečné. Zapomenete ho tam, napíšete další text někam dopředu a odevzdáte dokument s poloprázdnou stránkou. Je tedy výhodnější použít příkaz \maybebreak rozměr (např. \maybebreak 2.5cm), který zlomí stránku zhruba tehdy, když má do konce stránky místo menší nebo rovno udanému rozměru. Je-li místo na stránce výrazně větší, nestane se nic.

Příkaz \maybebreak je nutné definovat na začátku dokumentu takto:

\def\maybebreak #1 {\vskip0pt plus #1\penalty-120 \vskip0pt plus-#1\relax}

-- Jak nepřijít o háčky a čárky v PDF záložkách?

Je možné použít doplňkový balíček PDFuni. Pokud jej nemáte v instalaci TeXu, stáhněte si ho z mých stránek. Po jeho zařazení hned za \input ctustyle zůstanou české a slovenské texty v záložkách včetně akcentů. Stačí tedy mít na začátku dokumentu:

\input ctustyle
\input pdfuni
Poznámka: není-li použita verze CTUstyle aspoň beta(j), budou úvodní záložky stále bez akcentů.

Technické pozadí problému akcentů v záložkách je vyloženo v článku pdfuni-article.pdf.

-- Objevila se tajemná chyba nesouvisející s dokumentem

Asi 90 % všech takových zavleklých chyb (při kterých TeX přijde ke kolapsu mnohem později než v místě syntaktického prohřešku) je způsobeno zapomenutým separátorem parametru: zapomenutým prázdným řádkem pod nadpisem, zapomenutou mezerou za názvem souboru v \inspic nebo zapomenutou prázdnou závorkou. Ověřte tedy, zda máte prázdný řádek za nadpisem v příkazech \chap, \sec, \secc, \app, resp. zda máte mezeru (či konec řádku) za názvem souboru v \inspic nebo \cinspic. Zkontrolujte, zda párují všechny závorky {}.

Pokud se tímto nepodařilo chybu odhalit, je možné do dokumentu napsat \tracingall a pak se přehrabovat v .log souboru v tunách nejrůznějších informací. Upozorňuji ale, že to je pro začátečníka velmi odrazující zážitek. Je lépe ,,půlením intervalu`` (tedy dělením dokumentu na části, přidáváním \bye do souboru na přechodnou dobu někam dřív než na konec dokumentu) se pokusit odhalit místo v dokumentu, kde k chybě došlo.

-- Objevila se chyba ,,\mtext {bibliography} ! Paragraph ended before \eoldefA was complete.``

Od verze OPmac May 2016 jsem přešel na separaci titulků koncem řádku a ne prázdným řádkem. Pravděpodobně máte v TeXové distribuci tuto novou verzi OPmac, ale k ní v aktuálním adresáři starší verzi ctustyle.tex, která s novou verzí OPmac bohužel nespolupracuje. Je třeba z této stránky stáhnout verzi CTUstyle aspoň Apr. 2016.

-- Používám svůj starý ctustyle.tex modifikovaný pro speciální účely z doby psaní předchozí závěrečné práce a ono to po upgrade TeXu (a OPmac) nefunguje

Pravděpodobně se objeví chyba jako je uvedeno výše (Paragraph ended before \eoldefA) a možná také nebude fungovat \verbinput a verbatim prostředí. Chcete-li zůstat u svého modifikovaného (starého) souboru maker, inspirujte se řádky 601 a 602 (\ifx\eoldef\undefined), dále řádky 632--636 (\ifx\eoldef\undefined) a konečně řádky 681--715 (\ifx\printttline\undefined) aktuálního a oficiálního souboru ctustyle.tex a alternativní definice z těchto řádků vložte do svého souboru. Pak by měl i Váš soubor fungovat s novou verzí OPmac.

-- Zjevilo se mnoho hlášení ,,OPmac WARNING: \dotocnum unused in printchap/printsec/printsecc`` a jsou pobořené nadpisy a obsah.

Použili jste verzi OPmac Jul. 2013 nebo nevější se starší verzí CTUstyle. Je třeba z této stránky stáhnout verzi CTUstyle aspoň Jul. 2013.

Důvod této nekompatibility spočívá v tom, že jsem do OPmac zapracoval požadavky uživatelů CTUstyle týkající se možnosti pracovat s nečíslovanou kapitolou (viz příkazy \nonum, \notoc v dokumentaci k OPmac).

-- Zjevilo se hlášení ,,ERROR -- OPmac older than Jun. 2013`` a dokument nejde TeXovat.

Použili jste verzi CTUstyle Jul. 2013 se starší verzí OPmac. Je potřeba stáhnout verzi OPmac aspoň Jul. 2013.

-- Zjevila se chyba ``Too many }'' při otevření *.ref

Chyba vypadá zhruba takto:

(./jmenodokumentu.ref
! Too many }'s.

Při přechodu na OPmac verze Apr. 2014 se pozměnila vnitřní struktura *.ref souboru. Stačí soubor *.ref vymazat a v klidu TeXovat dále.

-- Ve vnořených seznamech jsou nežádoucí vertikální mezery kolem seznamů.

Pokud chcete nechat vertikální mezery jen kolem hlavního seznamu, ale ve vnořených je nechcete, zaneste do svých definic tento kód

\addto\begitems{\def\iiskip{\endgraf}}

Pokud nechcete vertikální mezery nikde, pište:

\def\iiskip{\endgraf}

Konečně, pokud chcete malou vertikální mezeru kolem každé položky, vložte:

\newdimen\iiskipamount  \iiskipamount=3pt
\def\iiskip{\vskip\iiskipamount}
\addto\begitems{\removelastskip\parskip=\iiskipamount \def\iiskip{\endgraf}}

-- Jak přidám do prohlášení naskenovaný podpis?

Předpokládejme, že máte podpis naskenován v souboru podpis.jpg a má ořezány bílé okraje. Pak do parametru příkazu \declaration pod text prohlášení přidejte (místo příkazu \signature, který dělal tečky) následující kód:

\vskip3mm\hfill \picw=30mm \inspic podpis.jpg

Za koncovkou .jpg musí být mezera nebo konec řádku. Rozměry si můžete upravit dle svého podpisu jinak. Příkaz \signature (pro tečky) nepište, protože není potřeba.

-- Chci jinou úpravu odstavců: bez odstavcové zarážky a s mezerami mezi odstavci.

Tuto možnost jsem zapracoval od verze beta(u) Apr. 2014. Stačí na začátek dokumentu (po zavolání ctustyle.tex) napsat

\parskip=\medskipamount \parindent=0pt

-- Chci jinou úpravu popisků

Objevil se požadavek, aby popisky centrovaly, pokud jsou na samostatném řádku, ale jinak se chovaly jako obyčejný odstavec, pokud přetečou na více řádků. Viz OPmac trik 0059.

-- Chci mít celou maticí obrázků, každý se svým menším popiskem, a k tomu jeden velký popisek. Vše má být odkazovatelné

Dotaz: Mám skupinu obrázků, kterou popíši jedním caption a labelem. Každý obrázek zvlášť bych ale chtěl mít označen a) b) c) atd. Viděl jsem postup, který jste napsal na stránky CTUstyle, ale tento postup mi nedovolí přiřadit ještě jednotlivým obrázkům vlastní labely tak, abych se na ně mohl jednotlivě odkazovat v textu a nemusel natvrdo psát např. \ref[obrazek] a. Dá se v plainTexu tato funkcionalita nějak naimplementovat? (v LaTexu pro toto používám balíček subcaption a popisky se přiřazují k subfigure).

Odpověď: Sice přesně nevím, k čemu to potřebujete, když dopředu víte, jaké budou mít jednotlivé obrázky písmena (takže \ref[obrazek]~a dává smysl), ale přesto jsem se o něco pokusil. Možná jsem to ne zcela správně pochopil. Definujte si

\def\inlabel[#1]{\isdefined{lab:#1}\iftrue \csname lab:#1\endcsname \else ??\fi}
\def\setlabel[#1-#2]{\label[#1-#2]{\let~=\relax \wlabel{\inlabel[#1]~#2}}}

a pak do místa cíle (kde jsou jednotlivé podobrázky) můžete psát:

a)\setlabel[obrazek-a]
... b)\setlabel[obrazek-b]
...
Pod všemi obrázky naráz pak dáte
\label[obrazek]\caption/f Myšlenka je znázorněna na obrázcích a) až f)
Odkazovat nyní můžete pomocí \ref[obrazek-a], \ref[obrazek-b] atd.

Vysvětlení: Dvojice \label[cosi]\wlabel{neco} vytvoří cíl s lejblíkem [cosi], který se v místě \ref[cosi] promění v "neco". Vy ovšem chcete v textu "neco" mít obsaženo číslo vygenerované pomocí \caption pod všemi obrázky. Toto číslo je v době činnosti \wlabel neznámé, protože se vyhodnotí až později. Je to dopředná reference, která se musí udělat dalším odkazováním pomocí \inlabel. Fungovat to začne až ve třetím průchodu TeXu, protože to je dvojitá dopředná reference.

-- Chci více tabulek vedle sebe

Je třeba je zapouzdřit do \vtop s menším \hsize. Například takto:

\midinsert
\hbox to\hsize{\hsize=.45\hsize
\hfil
  \vtop{\ctable{cc}{
    prvni & druhy\cr
    treti & ctvrty
    }
    \caption/t První myšlenka\par}
\hfil
  \vtop{\ctable{cc}{
    dalsi & sesty\cr
    sedmy & osmy
    }
    \caption/t Druhá myšlenka\par}
\hfil}
\endinsert

-- Potřebuji další úroveň sekcí \seccc

Je možné použít myšlenku z OPmac triku 0055, jen mírně upravenou pro design CTUstyle:

\newcount\secccnum

\def\seccc#1\par{%
   \ifx\prevseccnum\theseccnum \global\advance\secccnum by1
   \else \global\let\prevseccnum=\theseccnum \global\secccnum=1
   \fi
   \edef\thesecccnum{\theseccnum.\the\secccnum}%
   \printseccc{#1\unskip}%
}
\def\printseccc#1{\norempenalty-100 \medskip
  \line{\locc\Blue\vrule height 3mm width4mm depth.1mm\Black
  \hss\vtop{\locc\advance\hsize by-8mm
   \bf \noindent \thesecccnum\quad \nBlue#1\strut\nbpar\kern-4.5pt}}%
  \nobreak\vskip-.5\parskip\smallskip\kern2pt
  \firstnoindent
}

Pozor! Při použití CTUstyle3 se interní makra pro sekce opírají o jiný koncept a je třeba použít jiné řešení:

\newcount\secccnum

\eoldef\seccc#1{\incr\secccnum \printseccc{#1}}
\def\printseccc#1{\medskip
  \line{\Blue\vrule height 3mm width4mm depth.1mm\Black
  \hss\vtop{\advance\hsize by-8mm
   \bf \noindent \_theseccnum.\the\secccnum\quad \Blue#1\nbpar}}%
   \nobreak\vskip-.5\parskip\smallskip
  \_firstnoindent
}
\addto\_seccx{\secccnum=0 }

-- Chci vložit azbuku

V případě CTUstyle1 nebo 2 je potřeba zavést soubor cyrchars.tex. Ale to nestačí, protože ten je připraven pro výchozí fonty CM, zatímco CTUstyle využívá výchozí fonty LM. Je tedy přeba přidat ještě řádky, které oznamují návaznost LM fontů na příslušné fonty s azbukou:

\input cyrchars.tex
\setexfont cs-lmr10  X2  rxrm1000
\setexfont cs-lmbx10 X2  rxbx1000
\setexfont cs-lmri10 X2  rxti1000

Pak je možné přímo napsat v UTF-8 text v azbuce bez nutnosti v daném místě cokoli přepínat.

Je možné, že budou chybět návaznosti na fonty v jiných velikostech a variantách. Pak je třeba podobně doplnit deklaraci i pro další fonty.

Toto je použitelné pro krátké texty v azbuce. Chcete-li v azbuce psát celou práci, je třeba zavést pro příslušný jazyk vhodně kódované vzory dělení a návod pro toto už není tak jednoduchý.

Při použití CTUstyle3 je potřeba zavést Unicode font podporující azbuku, což defautlní LM fonty nejsou. Po \input ctustyle3 zaveďte třeba New Computer Modern fonty a hned se vraťte zpět k defaultním LM fontům:

\fontfam[newcm]
\LMfonts\rm

Dále si definujte třeba makro \azbuka: \def\azbuka{\NewCM\rm \rulang}. Nyní můžete přepínat do azbuky pomocí

Běžný text {\azbuka здесь используется кириллица} a zase normální text.

Všimněte si, že makro \azbuka zapíná také odpovídající vzory dělení. V ukázce je přepínač \rulang (ruské vzory dělení) ale můžete použít samozřejmě \bglang (bulharština), \uklang (ukrajinština) a jiné. Seznam všech podporovaných jazyků získáte příkazem \langlist.

V azbuce lze přepnout do kurzívy, ale nefunguje \bf, protože CTUstyle používá pro \bf font Technika, který neobsahuje azbuku. Je ale možné použít aspoň tučný font z New Computer Modern: stačí přidat \let\bf=\_bf do definice Vašeho makra \azbuka.

-- Po vložení kódu na \hisyntax z OPmac triku nefunguje zvýrazňování stringů v listingu

Problém je v tom, že ctustyle nastavuje znak " jako aktivní, zatímco makra pro \hisyntax předpokládají, že v době jejich čtení je znak " obyčený. Je tedy pořeba obklopit kód z OPmac triků dvěma řádky:

\catcode`\"=12  % nastavení znaku " na normální
... kód pro \hisyntax
\catcode`\"=13  % nastavení znaku " zpět na aktivní

Poznámka: Při použití CTUStyle3 (postaveném na OpTeXu) není třeba žádné kódy pro \hisyntax vkládat. OpTeX podporuje \hisyntax makro sám od sebe.

-- Jak tisknout algoritmy zapsané v pseudo-kódu?

Množí se dotazy na možnost vytvoření pseudo kódů podobně, jako to dělá například LaTeXový balíček algorithms. V případě CTUStyle3 je k tomu účelu možné použít OpTeX trik 0078.

-- Kromě obecného seznamu literatury potřebuji ještě speciální seznam s vlastními výsledky

Existuje požadavek uvádět vlastní články a vlastní příspěvky v konferencích atd. do jiného seznamu literatury než obecný seznam, který odkazuje na ostatní zdroje. Obecný seznam má vypadat jako obvykle, ale dále má být (třeba v jiné sekci) seznam vlastní publikační aktivity. Tento seznam má být třeba rozdělen na podsekce, jedna sekce obsahuje příspěvky v časopisech a mají být označeny [J1], [J2] atd., další s příspěvky v konferencích označeno [C1], [C2] atd. a podobně případně další druhy publikací. Jde o to, aby bylo možné na takový speciální seznam odkazovat v textu.

Řešení. Do maker na začátku dokumentu přidejte:

\def\mycite[#1]{{\null\def\addcitelist##1{}\nonumcitations\unskip\cite[#1]}}
\def\specialbibs{\bibnum=1000
   \def\printbib{\hangindent=2\iindent
      \noindent\hskip2\iindent \llap{[\the\bibmark] }}%
}
(v případě CTUstyle3, tj. OpTeXu, kód vypadá na dvou místech jinak:)
\def\mycite[#1]{{\null\def\_addcitelist##1{}\nonumcitations\unskip\cite[#1]}}
\def\specialbibs{\bibnum=1000
   \def\_printbib{\hangindent=2\iindent
      \noindent\hskip2\iindent \llap{[\the\bibmark] }}%
}

V textu pak odkazujte pomocí \cite[...] na obecný seznam a pomocí \mycite[...] na speciální seznam. Obecný seznam realizujte obvyklým způsobem, tj. při použití opmac-bib třeba takto:

\usebib/c (simple) mybase
a dále po použití \specialbibs může následovat speciální seznam, kde jsou jednotlivé příspěvky vloženy ,,manuálně`` pomocí \bib, například takto:
\specialbibs

\secc Conference contributions

\bib[c1] = {C1} I. Au. Thor. {\it About something}, ...
 
\bib[c2] = {C2} I. Au. Thor. {\it About second problem}, ...

\secc Papers in journals
 
\bib[j1] = {J1} I. Au. Thor, Co. Author. {\it About third problem}, ...
 
\bib[j2] = {J2} I. Au. Thor. {\it About fourth problem}, ...

Důležité je přidělit každé speciální publikaci nejen lejblík, ale i značku pomocí \bib[lejblík] = {značka}. Značka se v seznamu vytiskne a bude používána v odkazech pomocí \mycite. Tedy \mycite[c1,j1,j2] se promění v [C1,J1,J2] a v PDF souboru to bude klikatelné.

Pokud mají \specialbibs předcházet před obecným seznamem odkazů, je třeba \specialbibs včetně všech údajů \bib schovat do společné skupiny, tedy

{\specialbibs 
 \secc ... 
 \bib... 
 \bib... 
 \secc ... 
 \bib... 
 \bib...
} 
 \secc ...
 \usebib...

-- Abstrakt se do jednoho sloupce nevejde, každý abstrakt má být na samostatné stránce

Původně se v CTUstyle předpokládalo, že dva abstrakty (typicky česky a anglicky) jsou umístěny na jediné stránce, v každém sloupci abstrakt jedné jazykové varianty. Jsou ale studenti, kteří se i v abstraktu chtějí vyjádřit poněkud podrobněji a do jednoho sloupce se jim to nevejde. Nebo existuje oficiální požadavek, že abstrakty mají být na různých stránkách.

Od verze CTUstyle beta(8) Aug. 2017 styl počítá s možností, že se text abstraktu (s případnými klíčovými slovy) do jednoho sloupce nevejde. Nastane-li taková situace, je na jedné stránce ve dvou sloupcích první abstrakt a na další stránce druhý abstrakt, rovněž případně rozdělen do dvou sloupců. Více než dva sloupce pro jeden abstrakt nejsou podporovány.

Máte-li krátký text abstraktů, ale chcete mít jednotlivé abstrakty na různých stránkách, rozdělte text každého abstraktu do dvou sloupců pomocí \vfil\break (mezi sloupci). Nebo napište \vfil\break na konec textu obou abstraktů a užijte klíčová slova. Pak bude abstrakt v levém sloupci a klíčová slova budou následovat ve sloupci pravém.

Podobnou inteligenci má (už od první verze CTUstyle) i obsah. Je-li obsah krátký, obsadí jen vnější sloupec jedné strany. Vnitřní sloupec zůstane prázdný. Je-li delší, obsadí dva sloupce a je-li super dlouhý, pokračuje v dalších sloupcích na dalších stránkách.

-- CTUstyle nelze zprovoznit v MikTeXu

Setkávám se, bohužel, s některými emaily od uživatelů MikTeXu, že nemohou zprovoznit CTUstyle a popisují různé okultní potíže. Například, že prý příkaz pdfcsplain dokument vygeneruje nesprávně dokument.dvi místo správného dokument.pdf. Tato kuriózní chyba, kdy není příkazen pdfcsplain spuštěna varianta CSplainu s přímým výstupem do PDF, má pak ještě kuróźnější vizáž na terminálu po zadání příkazu pdfcsplain minimal

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (MiKTeX 2.9) (preloaded
format=csplain-utf8 2015.2.7)  7 FEB 2015 19:15
entering extended mode
 encTeX v. Jun. 2004, reencoding enabled
**minimal
(C:\Users\...\minimal.tex
The format: csplain <Aug. 2014>.
The cs-fonts are preloaded and A4 size implicitly defined.
The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet activated by encTeX
(C:\Users\...\ctustyle.tex 
CTUstyle: Thesis at Czech Technical University in Prague, <beta(Z) Oct. 2014>
ERROR -- pdfTeX isn't detected, use ``pdfcsplain minimal'' command. ) )

Tedy na prvním řádku to oznámí, že je spuštěn pdfTeX verze oné a na posledním řádku to prohlásí, že není pdfTeX detekován a že je třeba spustit příkaz, který byl právě spuštěn. No to jsme se tedy nasmáli. CTUstyle totiž detekuje, zda je použit csplain s přímým výstupem do PDF a pokud ne, oznámí tuto chybu. Že je použit pdfTeX ale bez přímého výstupu do PDF je z tohoto pohledu stejné, jakoby pdfTeX použit nebyl. A proč je na příkaz pdfcsplain navěšena nesprávně vygenerovaná verze formátu? Nevím. Do vnitřností MikTeXu nevidím, neboť nejsem (a nikdy jsem nebyl) uživatelem MS Win. Nemám možnost to vyzkoušet. Před dvěma lety jsem s Christianem Schenkem komunikoval a on přislbil, že provede veškeré opravy, které jsem do csplainu zapracoval. Kde se to pak zašantročilo, to může zjistit jen MikTeXový uživatel. Uživatelům, kteří mají tyto či podobné okultní problémy s MikTeXem radím: najděte si někoho, kdo má MikTeX nainstalovaný a chodí mu to a zkoumejte společně rozdíly. Nebo odstraňte MikTeX a nainstalujte TeXlive.

-- Jak vytvořit Long-term Archiving PDF/A ?

Na Karlově universitě jejich odevzdávací systém kontroluje, zda odevzdávané PDF splňuje standard PDF/A ve verzi 2u, podrobněji viz návod a stránku M. Mareše. Nevyhovuje-li PDF těmto standardům, práci odevzdávací systém na UK nepřijme. ČVUT sice zatím studenty takto neprudí, ale třeba studenta může zajímat, jak si uložit PDF své práce ve formátu Long-term Archiving (PDF/A) a zda to s CTUStyle vůbec jde.

Implicitně TeX (pdfTeX ani LuaTeX ani XeTeX) negenerují PDF/A compliant výstupy. Je třeba vykonat další práci navíc. V případě, že používáte pdfcsplain, na začátek svého dokumentu vložte:

 \input glyphtounicode.tex
 \input glyphtounicode-cmr.tex
 \input glyphtounicode-ntx.tex
 \pdfgentounicode=1

a vytvořte PDF výstup jako obvykle. Pak nechte tento výstup zkonvertovat online konvertítkem nebo jiným online konvertítkem (u toho druhého Vám to dovolí konverovat jen jednou, pak musíte smazat cookies). Výsledek je akceptovatelý jako PDF/A například systémem verapdf užívaným na UK s jejich speciálním profilem.

Pracujete-li s Unicode enginem (např. CTUstyle3, OpTeX), pak nic do dokumentu vkládat nemusíte, ale online konvertítko nebo jiné online konvertítko na výsledné PDF je třeba přesto použít.

Ověřit si, zda máte dokument kompliantní s PDF/A, můžete pomocí VeraPDF a v případě závěrečné práce Univerzity karlovy si stáhněte ještě UK profil odkazovaný na jejich www stránce a test proveďte s tímto profilem (v GUI programu Verapdf je třeba při výběru profilu rolovat netypicky nahoru).

-- Dá se CTUstyle použít na Overleaf?

Ano, třebaže Overleaf (sdílené TeXové dokumenty) je primárně konfigurovaný pro LaTeX, dá se použít i s plainTeXem. Stačí do hlavního adresáře projektu zařadit soubor s názvem latexmkrc s jednořádkovým obsahem

$pdflatex = 'pdfcsplain %O %S';
V případě použití CTUstyle3 pak latexmkrc vypadá takto:
$lualatex = 'luatex -fmt=optex %O %S';

a v nabídce všemožných LaTeXů zvolit LuaLaTeX. Šablona pro tento případ je připravena.