#
from lxml import etree
import re
+from urllib import quote
from librarian.dcparser import Person
_register_function(texcommand)
+def reg_urlquote():
+ def urlquote(content, text):
+ """ Quotes URLs """
+ if isinstance(text, list):
+ text = ''.join(text)
+ return quote(text.encode('utf-8'), safe="/:")
+ _register_function(urlquote)
+
+def reg_breakurl():
+ def breakurl(content, text):
+ """ Allows breaks in urls """
+ if isinstance(text, list):
+ text = ''.join(text)
+ chunks = text.split("/")
+ e = etree.Element("span")
+ e.text = chunks[0]
+ ret = etree.Element("span")
+ ret.append(e)
+ for chunk in chunks[1:]:
+ ret.append(etree.Element("span", text="/"))
+ ret[-1].text = "/"
+ ret.append(etree.Element("cmd", {"name": "linebreak"}))
+ ret[-1].append(etree.Element("opt"))
+ ret[-1][-1].text = "1"
+ ret[-1].tail = chunk
+ return ret
+ #return re.sub(r'(/)([^/])', r'\1\\-\2', text)
+ _register_function(breakurl)
+
functions.reg_starts_white()
functions.reg_ends_white()
functions.reg_texcommand()
+functions.reg_urlquote()
+functions.reg_breakurl()
STYLESHEETS = {
'wl2tex': 'pdf/wl2tex.xslt',
insert_tags(doc,
re.compile("(?<=[^-\s])-(?=[^-\s])"),
"dywiz",
- exclude=[DCNS("identifier.url"), DCNS("rights.license")]
+ exclude=[DCNS("identifier.url"), DCNS("rights.license"), 'www']
)
and adds *_parsed versions with forenames first.
"""
for person in doc.xpath("|".join('//dc:'+(tag) for tag in (
- 'creator', 'contributor.translator')),
+ 'creator', 'contributor.translator',
+ 'contributor.editor', 'contributor.technical_editor')),
namespaces = {'dc': str(DCNS)})[::-1]:
if not person.text:
continue
# TeXML -> LaTeX
temp = mkdtemp('-wl2pdf')
+ for ilustr in document.edoc.findall("//ilustr"):
+ shutil.copy(ilustr.get("src"), temp)
+
if cover:
with open(os.path.join(temp, 'cover.png'), 'w') as f:
bound_cover.save(f)
# LaTeX -> PDF
shutil.copy(get_resource('pdf/wl.cls'), temp)
shutil.copy(get_resource('res/wl-logo.png'), temp)
+ #shutil.copy(get_resource('res/prawokultury-logo.png'), temp)
+ #shutil.copy(get_resource('res/trust-logo.eps'), temp)
+ shutil.copy(get_resource('res/nowoczesnapolska.org.pl.png'), temp)
+ shutil.copy(get_resource('res/koedlogo.png'), temp)
try:
cwd = os.getcwd()
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions\relax
-\LoadClass[a4paper,oneside]{book}
+%\LoadClass[a4paper,oneside]{book}
+\LoadClass[a4paper]{book}
\usepackage{trace}
+\usepackage{tabularx}
\usepackage[MeX]{polski}
\usepackage[xetex]{graphicx}
\usepackage[overload]{textcase}
\usepackage{scalefnt}
-\usepackage[colorlinks=true,linkcolor=black,setpagesize=false,urlcolor=black,xetex]{hyperref}
+\usepackage[hyphens]{url}
+%\usepackage[colorlinks=true,linkcolor=black,setpagesize=false,urlcolor=black,xetex,unicode]{hyperref}
+\usepackage[colorlinks=true,linkcolor=black,setpagesize=false,urlcolor=blue,xetex,unicode]{hyperref}
\ifenablewlfont
\setmainfont [
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
-\lfoot{{\footnotesize \textsc{\@author} \emph{\@title}}}
+% CAUTION! Manually entered text.
+%\lfoot{{\footnotesize \textsc{\@author} \emph{\@title}}}
+\rfoot[{\footnotesize \thepage}]{{\footnotesize \textsc{\@author} \emph{Dlaczego nie warto blokować użycia komercyjnego\ldots}}}
\cfoot{}
-\rfoot{{\footnotesize \thepage}}
+%\rfoot{{\footnotesize \thepage}}
+\lfoot[{\footnotesize \textsc{\@author} \emph{Dlaczego nie warto blokować użycia komercyjnego\ldots}}]{{\footnotesize \thepage}}
\clubpenalty=100000
\widowpenalty=100000
\footnotesize
\color{theme}
+ \noindent \begin{minipage}[t]{.65\textwidth}\vspace{0pt}
+ %\href{http://prawokultury.pl}{\xbox{\includegraphics[width=1in]{prawokultury-logo.png}}}
+ \href{http://koed.org.pl}{\xbox{\includegraphics[height=.55in]{koedlogo.png}}}
+ \end{minipage}
\noindent \begin{minipage}[t]{.35\textwidth}\vspace{0pt}
- \href{http://www.wolnelektury.pl}{\xbox{\includegraphics[width=\textwidth]{wl-logo.png}}}
+ \raggedright
+ %\xbox{\includegraphics[width=1.6in]{trust-logo.eps}}
+ \href{http://nowoczesnapolska.org.pl}{\xbox{\includegraphics[height=.55in]{nowoczesnapolska.org.pl.png}}}
+ \vspace{.5em}
\end{minipage}
- \begin{minipage}[t]{.65\textwidth}\vspace{0pt}
+
+% \begin{minipage}[t]{.45\textwidth}\vspace{0pt}
\ifflaglessadvertising
\else
- \href{\bookurl}{Ta lektura}, podobnie jak tysiące innych, jest dostępna on-line na stronie
- \href{http://www.wolnelektury.pl/}{wolnelektury.pl}.
+ %\noindent Ten rozdział pochodzi z książki \emph{\@title}, która zostanie opublikowana w portalu
+ %\href{http://prawokultury.pl/}{prawokultury.pl}.
\vspace{.5em}
\fi
- Utwór opracowany został w ramach projektu \href{http://www.wolnelektury.pl/}{Wolne Lektury}
- przez \href{http://nowoczesnapolska.org.pl}{fundację Nowoczesna Polska}.
+ % Utwór opracowany został w ramach projektu \href{http://www.wolnelektury.pl/}{Wolne Lektury}
+ % przez \href{http://nowoczesnapolska.org.pl}{fundację Nowoczesna Polska}.
- \end{minipage}
+ % \end{minipage}
\noindent \rule{\linewidth}{0.4pt}
\vspace{.6em}
\rightsinfo
\vspace{.6em}
- Źródło: \href{\bookurl}{\bookurl}
+ %Źródło: \href{\bookurl}{\bookurl}
- \vspace{.6em}
+ %\vspace{.6em}
\sourceinfo
\description
}
\newcommand{\typosection}[1]{%
-{\addfontfeature{FakeStretch=0.96, LetterSpace=-4.0}\emph{\scalefont{2}#1}}
+%{\addfontfeature{FakeStretch=0.96, LetterSpace=-4.0}\emph{\scalefont{2}#1}}
+{\addfontfeature{FakeStretch=0.96, LetterSpace=-4.0}\emph{\scalefont{1.7}#1}}
%{\addfontfeature{Scale=2.0, FakeStretch=0.98, LetterSpace=-2.0}\emph{#1}}
}
}
\newcommand{\nazwautworu}[1]{%
-\section*{\typosection{#1}}%
+\section*{\raggedright{\typosection{#1}}}%
}
\newcommand{\podtytul}[1]{%
\newcommand{\dlugicytat}[1]{%
\begin{quotation}%
+\raggedright%
#1%
\end{quotation}%
}
\subsection*{\typosubsection{#1}}%
}
\newcommand{\srodtytul}[1]{%
-\subsection*{\typosubsection{#1}}%
+\par{\typosubsubsection{#1}}%
+%\subsection*{\typosubsection{#1}}%
}
\newcommand{\naglowekscena}[1]{%
\subsubsection*{\typosubsubsection{#1}}%
}
\newcommand{\naglowekrozdzial}[1]{%
-\subsubsection*{\typosubsubsection{#1}}%
+\subsection*{\raggedright \typosubsection{#1}}%
+%\subsubsection*{\typosubsubsection{#1}}%
}
\newcommand{\naglowekosoba}[1]{%
\par{\textsc{#1}}\nopagebreak%
}
\newcommand{\naglowekpodrozdzial}[1]{%
-\par{#1}\nopagebreak%
+\subsubsection*{\typosubsubsection{#1}}%
+%\par{#1}\nopagebreak%
}
\newcommand{\miejsceczas}[1]{%
\fi
}
+
+\newcommand{\www}[1]{%
+%\href{#1}{#1}%
+\url{#1}%
+}
+\newcommand{\listanum}[1]{%
+\begin{enumerate}%
+#1%
+\end{enumerate}%
+}
+\newcommand{\listapunkt}[1]{%
+\begin{itemize}%
+#1%
+\end{itemize}%
+}
+\newcommand{\punkt}[1]{%
+\item #1%
+}
+\newcommand{\ilustr}[2]{%
+\vspace{1em}%
+\par{\noindent\includegraphics[width=\textwidth]{#1}}%
+\vspace{1em}%
+}
\href{http://creativecommons.org/licenses/by-sa/3.0/}{Creative Commons
Uznanie Autorstwa – Na Tych Samych Warunkach 3.0 PL}.}
<xsl:if test=".//dc:rights.license">
- \def\rightsinfo{Ten utwór jest udostepniony na licencji
- \href{<xsl:value-of select=".//dc:rights.license" />}{<xsl:value-of select=".//dc:rights" />}.}
+ \def\rightsinfo{Ten utwór jest udostępniony na licencji\\
+ \href{<xsl:value-of select=".//dc:rights.license" />}{<TeXML escape="1"><xsl:apply-templates select=".//dc:rights" mode="inline" /></TeXML>}.}
</xsl:if>
\def\sourceinfo{
<xsl:if test=".//dc:source">
- Tekst opracowany na podstawie: <xsl:apply-templates select=".//dc:source" mode="inline" />
+ Tekst opracowany na podstawie: <TeXML escape="1"><xsl:apply-templates select=".//dc:source" mode="inline" /></TeXML>
\vspace{.6em}
</xsl:if>}
- \def\description{<xsl:apply-templates select=".//dc:description" mode="inline" />}
+ \def\description{\raggedright <TeXML escape="1"><xsl:apply-templates select=".//dc:description" mode="inline" /></TeXML>}
</TeXML>
</xsl:template>
</xsl:template>
+<xsl:template match="tabela|tabelka">
+ <cmd name="par" />
+ <cmd name="vspace"><parm>1em</parm></cmd>
+ <group><cmd name="raggedright" />
+ <env name="tabularx">
+ <parm><cmd name="textwidth"/></parm>
+ <xsl:choose>
+ <xsl:when test="@ramka='1' or @ramki='1'">
+ <parm><spec cat="vert"/>X<spec cat="vert"/>X<spec cat="vert"/>X<spec cat="vert"/>X<spec cat="vert"/>X<spec cat="vert"/></parm>
+ <cmd name="hline" />
+ <xsl:apply-templates mode="wiersze-ramki"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <parm>XXXXX</parm>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </env>
+ </group>
+ <cmd name="vspace"><parm>1em</parm></cmd>
+</xsl:template>
+<xsl:template match="wiersz" mode="wiersze-ramki">
+ <xsl:apply-templates />
+ <spec cat="esc"/><spec cat="esc"/>
+ <cmd name="hline" gr="0" />
+</xsl:template>
+<xsl:template match="wiersz">
+ <xsl:apply-templates />
+ <spec cat="esc"/><spec cat="esc"/>
+</xsl:template>
+
+<xsl:template match="kol">
+ <xsl:apply-templates mode="inline"/>
+ <xsl:if test="position() < last()">
+ <spec cat="align"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="punkt">
+ <cmd name="punkt"><parm>
+ <xsl:choose>
+ <xsl:when test=".//akap">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="inline"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </parm></cmd>
+</xsl:template>
+<xsl:template match="lista">
+ <xsl:if test="@typ='num'">
+ <cmd name="listanum">
+ <parm><xsl:apply-templates /></parm>
+ </cmd>
+ </xsl:if>
+ <xsl:if test="@typ='punkt'">
+ <cmd name="listapunkt">
+ <parm><xsl:apply-templates /></parm>
+ </cmd>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ilustr">
+ <cmd name="ilustr">
+ <parm><xsl:value-of select="@src" /></parm>
+ <parm><xsl:value-of select="@alt" /></parm>
+ </cmd>
+</xsl:template>
+
<!-- ========================================== -->
<!-- = PARAGRAPH TAGS = -->
<!-- = (can contain inline and special tags) = -->
</cmd>
</xsl:template>
+<xsl:template match="www" mode="inline">
+ <cmd name="href">
+ <parm><xsl:value-of select="wl:urlquote(text())" /></parm>
+ <parm><cmd name="url"><parm><xsl:value-of select="text()" /></parm></cmd></parm>
+ </cmd>
+</xsl:template>
+
<xsl:template match="tytul_dziela" mode="inline">
</xsl:template>
<xsl:template name="editors">
- <xsl:if test="@editors">
+ <!--xsl:if test="@editors">
<xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>
<xsl:value-of select="@editors" />
<xsl:text>.</xsl:text>
+ </xsl:if-->
+ <xsl:if test=".//dc:contributor.editor_parsed">
+ <cmd name="par"><parm>Redakcja literacka:
+ <xsl:for-each select=".//dc:contributor.editor_parsed">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="inline" />
+ </xsl:for-each>
+ </parm></cmd>
+ </xsl:if>
+ <xsl:if test=".//dc:contributor.technical_editor_parsed">
+ <cmd name="par"><parm>Redakcja techniczna:
+ <xsl:for-each select=".//dc:contributor.technical_editor_parsed">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="inline" />
+ </xsl:for-each>
+ </parm></cmd>
</xsl:if>
+
+
</xsl:template>
<xsl:template name="translators">
</group>
</xsl:template>
+
+
<!-- ================ -->
<!-- = IGNORED TAGS = -->
<!-- ================ -->