piątek, 22 maja 2009

Drobny przykład w XSLT

Fragment pliku XML wygląda jakoś tak:


<month no="1">
<item data="2009/01/03" dist="20" exdist="18.60" />
<item data="2009/01/25" dist="50" exdist="49.10" />
<month no="2">
...
</month>

Wszystkie item pomiędzy month trzeba zsumować aż do zadanego numeru miesiąca (włącznie), który jest n.b. wartością atrybutu no. Poniższy szablon wykona ww. zadanie:


<xsl:template name='drukuj-do-mc'>
<xsl:param name='mc'/>
<xsl:text> [od początku roku: </xsl:text>
<xsl:value-of select="sum(//item[not(../@no &gt; $mc)]/@dist)"/>
<xsl:text> km] </xsl:text>
</xsl:template>

Wyróżniony wiersz zawiera kluczowe przekształcenie XPath: //item[not(../@no &gt; $mc)]/@dist, co można zinterpretować następująco: wszystkie atrybuty dist przyczepione do elementu item, z całego dokumentu, ale pod warunkiem, że wartość atrybutu no elementu nadrzędnego jest nie większa niż $mc.

czwartek, 7 maja 2009

Pakiet fancyvrb (LaTeX)

Pakiet pozwala na formatowanie otoczenia verbatim, przykładowo można dodać numerowanie wierszy, zmienić stopień pisma (przydatne jak zawartość się nie mieści). Można też zdefiniować znak, który będzie rozpoznawany jako polecenie wewnątrz verbatim. To ostatnie przydaje się do formatowania fragmentów tekstu, np. złożenia kursywą lub w innym kolorze (przykład niżej)


\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{SVerbatim}{Verbatim}%
{commandchars=\+\[\],numbers=left,numbersep=5pt,fontsize=\footnotesize}
%%
\DefineVerbatimEnvironment{XVerbatim}%
{Verbatim}{numbers=left,numbersep=5pt,fontsize=\small}
\begin{document}

\begin{SVerbatim}
aa [ ] \[ \] %% <-- znaki [ ] znikają magicznie
bb [ ]
ccc +textit[cccc Hop siup!]
\end{SVerbatim}

\begin{Verbatim}[commandchars=\@\[\]]
aa [ ] \[ \]
bb [ ]
ccc @textit[cccc Hop siup!]
\end{Verbatim}

Magiczne commandchars definiujące znaki rozpoczynające
polecenie można definiować także `indywidualnie':

\begin{XVerbatim}[commandchars=\@\[\]]
aa [ ] \[ \]
bb [ ]
ccc @textit[cccc Hop siup!]
\end{XVerbatim}

\end{document}

Polecenie zatem zaczyna się znakiem `+' a argument jest zawarty wewnątrz `[' oraz `]'. Tych znaków nie można używać wewnątrz Verbatim (por. przykład pierwszy, powyżej). W tej sytuacji ich deklaracja ,,globalna'' jest ryzykowana, bo może się zdarzyć, że będzie potrzeba wstawić ,,magiczny'' znak literalnie.

poniedziałek, 4 maja 2009

Fälschungserschwerende Schrift (aka falsification-hindering script)

Ciekawostka, z wykładu w Bachotku. Krój, którym są -- nazwijmy to -- składanie tablice rejestracyjne w Niemczech jest dość specyficzny. Nie mając pojęcia do czego służy ww. font można by pomyśleć że to jakiś niedorobiony produkt amatora: litery ,,z różnych parafii'', jedna z szeryfami drugie nie, znaki w innych krojach optycznie podobne tutaj są specjalnie różne....

It was designed by Karlgeorg Hoefer for the German government in the late 1970s in the light of Red Army Faction terrorism when it was discovered that with the then-standard font for vehicle registration plates--the road sign font--it was particularly easy to modify letters by applying a small amount of black paint or tape. For example, it was easy to change a "P" to an "R" or "B", a "3" to an "8", or an "L" or "F" to an "E". Modifications to FE-font plates are somewhat more difficult, as they also require the use of white paint, which is easily distinguished at a distance from the retroreflective white background of the plate, in particular at night. Faked FE-Schrift letters (e.g., "P" to "R") appear conspicuously disproportionate.

Podrobić trójkę z ósemki, zamalowując kredą połowę znaku, jak to zrobił Hans Kloss w 17 odcinku SWNŻ (Akcja liść dębu) byłoby dużo trudniejsze. Dla porównania w większości fontów wygląda to tak: 88/33 (zakładam, że sz. czytelnik używa normalnego kroju w przeglądarce).