xmltex 元素中的更多属性

xmltex 元素中的更多属性

我正在写毕业论文,正在制作一种新的 latex 样式,用于排版法律 XML 文档。我有一个新的 latex 样式,它是使用新命令和源法律 XML 文件过度处理的 [article]。我使用xmltex.

当我将 XML 标签映射到我的 Latex 命令时,我不知道应该如何映射具有多个属性的不成对的标签。

更新:

抱歉,我的问题太过笼统。

这是我的 XML 文档的一部分:

<?xml version="1.0" encoding="utf-8"?>
<Api1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Base="http://www.zakonyprolidi.cz" Version="2.612x5">
<DocData>
<Head>
<DocId>2021107</DocId>
<DocType>Zakon</DocType>
<Collection>cs</Collection>
<Code>2000-121</Code>
<Year>2000</Year>
<Batch>36</Batch>
<Number>121</Number>
<Quote>121/2000 Sb.</Quote>
<Title>Zákon o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon)</Title>
<Short>Autorský zákon</Short>
<DeclareDate>2000-04-07</DeclareDate>
<PublishDate>2000-05-12</PublishDate>
<EffectFrom>2000-12-01</EffectFrom>
<EffectTill xsi:nil="true"/>
<LastUpdate>2014-09-13T00:15:42.403</LastUpdate>
<Href>/cs/2000-121</Href>
<File>2000c036z0121</File>
</Head>

<Fragments>

<Frag Struct="Virtual_Prefix" FID="f2021108" FragId="2021108" Diff="0" Valid="1" Level="1"/>
<Frag Struct="Prefix1" FID="f2021109" FragId="2021109" Diff="0" Valid="1" Level="2" Content="121"/>
<Frag Struct="Prefix2" FID="f2021110" FragId="2021110" Diff="0" Valid="1" Level="2" Content="Zákon"/>
<Frag Struct="Prefix3" FID="f2021111" FragId="2021111" Diff="0" Valid="1" Level="2" Content="ze dne 7. dubna 2000"/>
<Frag Struct="Prefix4" FID="f2021112" FragId="2021112" Diff="0" Valid="1" Level="2" Content="o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon)"/>

<Paragraphs>
<Frag Struct="Preambule" FID="f2021113" FragId="2021113" Diff="0" Valid="1" Level="2" Content="Parlament se usnesl na tomto zákoně České republiky:"/>
<Frag Anchor="body" Struct="Virtual_Body" FID="f2021114" FragId="2021114" Diff="0" Valid="1" Level="1"/>
<Frag Quote="Část 1" Number="1" Anchor="cast1" Struct="Cast" FID="f2021115" FragId="2021115" Diff="0" Valid="1" Level="2" Content="ČÁST PRVNÍ"/>
<Frag Struct="Nadpis_pod" FID="f2021116" FragId="2021116" Diff="0" Valid="1" Level="3" Content="PRÁVO AUTORSKÉ A PRÁVA S NÍM SOUVISEJÍCÍ"/>
<Frag Quote="§ 1" Number="1" Anchor="p1" Struct="Paragraf" FID="f2021117" FragId="2021117" Diff="0" Valid="1" Level="3" Content="§ 1"/>
<Frag Struct="Nadpis_pod" FID="f2021118" FragId="2021118" Diff="0" Valid="1" Level="4" Content="Předmět úpravy"/>
<Frag Quote="§ 1 odst. 1" Anchor="p1-1" Struct="Odstavec_Dc" FID="f2021119" FragId="10581026" Diff="0" Valid="1" Level="4" Content="Tento zákon zapracovává příslušné předpisy Evropské unie a upravuje:"/>
<Frag Quote="§ 1 písm. a)" Number="a" Anchor="p1-1-a" Struct="Pismeno_Lb" FID="f2021121" FragId="2021122" Diff="0" Valid="1" Level="5" Content="<var>a)</var> práva autora k jeho autorskému dílu," EffectFrom="2006-05-22"/>
<Frag Quote="§ 1 písm. b)" Number="b" Anchor="p1-1-b" Struct="Pismeno_Lb" FID="f2021123" FragId="2021123" Diff="0" Valid="1" Level="5" Content="<var>b)</var> práva související s právem autorským:"/>
<Frag Quote="§ 1 písm. b) bod 1." Number="1" Anchor="p1-1-b-1" Struct="Bod_Dd" FID="f2021124" FragId="2021124" Diff="0" Valid="1" Level="6" Content="<var>1.</var> práva výkonného umělce k jeho uměleckému výkonu,"/>
<Frag Quote="§ 1 písm. b) bod 2." Number="2" Anchor="p1-1-b-2" Struct="Bod_Dd" FID="f2021125" FragId="2021125" Diff="0" Valid="1" Level="6" Content="<var>2.</var> právo výrobce zvukového záznamu k jeho záznamu,"/>
<Frag Quote="§ 1 písm. b) bod 3." Number="3" Anchor="p1-1-b-3" Struct="Bod_Dd" FID="f2021126" FragId="2021126" Diff="0" Valid="1" Level="6" Content="<var>3.</var> právo výrobce zvukově obrazového záznamu k jeho záznamu,"/>
<Frag Quote="§ 1 písm. b) bod 4." Number="4" Anchor="p1-1-b-4" Struct="Bod_Dd" FID="f2021127" FragId="2021128" Diff="0" Valid="1" Level="6" Content="<var>4.</var> právo rozhlasového nebo televizního vysílatele k jeho vysílání," EffectFrom="2006-05-22"/>
<Frag Quote="§ 1 písm. b) bod 5." Number="5" Anchor="p1-1-b-5" Struct="Bod_Dd" FID="f2021129" FragId="2021129" Diff="0" Valid="1" Level="6" Content="<var>5.</var> právo zveřejnitele k dosud nezveřejněnému dílu, k němuž uplynula doba trvání majetkových práv,"/>
<Frag Quote="§ 1 písm. b) bod 6." Number="6" Anchor="p1-1-b-6" Struct="Bod_Dd" FID="f2021130" FragId="2021130" Diff="0" Valid="1" Level="6" Content="<var>6.</var> právo nakladatele na odměnu v souvislosti se zhotovením rozmnoženiny jím vydaného díla pro osobní potřebu,"/>
<Frag Quote="§ 1 písm. c)" Number="c" Anchor="p1-1-c" Struct="Pismeno_Lb" FID="f2021131" FragId="2021131" Diff="0" Valid="1" Level="5" Content="<var>c)</var> právo pořizovatele k jím pořízené databázi,"/>
<Frag Quote="§ 1 písm. d)" Number="d" Anchor="p1-1-d" Struct="Pismeno_Lb" FID="f2021132" FragId="2021132" Diff="0" Valid="1" Level="5" Content="<var>d)</var> ochranu práv podle tohoto zákona,"/>
<Frag Quote="§ 1 písm. e)" Number="e" Anchor="p1-1-e" Struct="Pismeno_Lb" FID="f2021133" FragId="2021133" Diff="0" Valid="1" Level="5" Content="<var>e)</var> kolektivní správu práv autorských a práv souvisejících s právem autorským."/>
</Paragraphs>


</Fragments>

</DocData>

</Api1>

这是我的“xmt 中的新 Latex 样式”:

   \XMLelement{Api1}{}
{
%
% test.tex for testing LaTeX macros for typesetting 
% Czech law documents 
%
\documentclass[12pt, a4paper, twoside]{article}
%
% standard LaTeX packages
%
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
%\usepackage[colorinlistoftodos]{todonotes}
%
% page layout
%
\usepackage[hmargin=10mm,
            tmargin=2mm,
            bmargin=10mm,
            includeheadfoot,
            heightrounded,
           ]{geometry}

\usepackage{fancyhdr}
\usepackage{enumitem}

%
% font setting
%
\usepackage{cmap}         % character mapping in PDF
\usepackage[T1]{fontenc}  % 8bit font encoding for better hyphenation 
\usepackage{microtype}    % pdftex microtypography extensions
\usepackage{garamond}     % garamond z http://gael-varoquaux.info/computers/garamond/
%
% multicol setting
%
\usepackage{multicol}
\multicolovershoot 12pt   % default 0pt 
\multicolundershoot 12pt  % default 2pt
%
% other settings
%
\emergencystretch 3dd
\parskip 3dd plus 2dd minus 2dd
%
% new macros
%
\newenvironment{absolutelynopagebreak}
  {\par\nobreak%\vfil\penalty0\vfilneg
   \vtop\bgroup}
  {\par\xdef\tpd{\the\prevdepth}\egroup
   \prevdepth=\tpd}
\newcommand{\nobpar}{\nobreak\par\nobreak}

\newcommand{\preambule}[1]{{\normalsize##1}{}}
\newcommand{\cast}[1]{\vskip 0.2em plus .2em minus .2em 
    {\centering\textbf{{\normalsize##1}}
    \nobpar}}
\newcommand{\castpod}[1]{{\vskip 0.2em plus .2em minus .2em
    \centering\normalsize
    \textbf{##1}
    \nobpar}}
\newcommand{\hlava}[1]{{\vskip 0.2em plus .2em minus .2em 
    \normalsize\centering {##1}\nobpar}}
\newcommand{\hlavapod}[1]{{\vskip 0.2em plus .2em minus .2em
    \normalsize \centering {##1}\nobpar}}
\newcommand{\dil}[1]{{\vskip 0.2em plus .2em minus .2em
    \itshape \centering {##1}\nobpar}}
\newcommand{\dilpod}[1]{{\vskip 0.2em plus .2em minus .2em
    \itshape \centering {##1}\nobpar}}
\newcommand{\paragraf}[1]{{\vskip 0.2em plus .2em minus .2em
    \centering{##1}\nobpar}}
\newcommand{\paragrafpod}[1]{{\vskip 0.2em plus .2em minus .2em
    \bfseries \centering{##1}\nobpar}}


\renewenvironment{center}{\vskip 0em \centering}

%
% style patches
%
\makeatletter
% maketitle patch
\def\@type{}
\newcommand{\type}[1]{
  \def\@type{##1}
}
\def\@numero{}
\newcommand{\numero}[1]{
  \def\@numero{##1}
}

\renewcommand{\@maketitle}{
\newpage
 \null
 \list{}{\rightmargin 35mm \leftmargin 35mm \vspace{-2.5em}}%
                \item\relax 
\begin{center}%
  {{\normalsize \bfseries \sffamily \@numero }\par}%
\end{center}%
 \begin{center}%
  {{\normalsize \bfseries \vskip 0.3em \@type }\par}%
 \end{center}%
 \begin{center}%
  {\normalsize \@date \par}%
 \end{center}%
 \begin{center}%
  {\normalsize \bfseries \@title \par}%
 \end{center}%
  \endlist
 \vskip 1em%
 \par 
 }


\makeatother

%
%zahlavi/zapati
%
\fancyhead[LO,RE]{{Strana \thepage}}
\fancyhead[C]{Sbírka zákonů č. \cislo}
\fancyhead[RO,LE]{Částka \castka}
\fancyfoot{}
\pagestyle{fancy}
\setlength\headheight{17.27403pt}
\makeatletter
\let\ps@plain\ps@fancy 
\makeatother
\renewcommand{\headrulewidth}{1.2pt}

\newcommand{\cislo}{{\sffamily\textbf{121}} / 2000}
%\newcommand{\castka}{}
\newcommand{\castka}[1]{{\normalsize##1}{}}

%predefinovani vyctovych prostredi pro telo paragrafu
%


\newenvironment{reenumerate}{
\begin{enumerate}
  \setlength{\itemsep}{0pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}
  \setlist[enumerate]{leftmargin=*}
  \renewcommand{\labelenumi}{\alph{enumi})}
  \renewcommand{\labelenumii}{\arabic{enumii}.}
}{\end{enumerate}}

\newenvironment{reenumerated}{
\begin{enumerate}
  \setlength{\itemsep}{4pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}
  \setlist[enumerate]{leftmargin=*}
  \renewcommand{\labelenumi}{(\arabic{enumi})}

}{\end{enumerate}}

\garamond
\raggedcolumns
\flushcolumns
\hyphenation{re-pu-bli-ky}

\title{}

\date{}

\type{}

\numero{}


\begin{document}




}
{\end{document}}

\XMLelement{Frag}
    {\XMLattribute{Content}{\type}{}}
    {\type}
    {}

%\XMLelement{Batch}{}{\xmlgrab}{\castka#1}

%\XMLelement{Paragraphs}{}{\begin{multicols}{2}[\maketitle]}{\end{multicols}}
%\XMLelement{Fragments}{}{\begin{absolutelynopagebreak}}{\end{absolutelynopagebreak}}         



\XMLelement{Head}{}{\xmlgrab}{}

我希望通过属性结构的内容将属性“Content”的具体内容映射到 latex 的命令类型、numero、date 等。

//编辑:

谢谢回复。我会尽量详细说明。

当我定义新命令“numero”和“type”并在 \maketitle 中重新定义“date”和“title”以进行排版时,我过度使用了 latex 样式的“article”。这些命令应与 xml 文件中的标签匹配,如下所示:

Frag Struct="Prefix1" Content="121"  as command "numero" in latex and he typeset "121"
Frag Struct="Prefix2" Content="Zákon" latex command "type" typeset "Zákon"
etc

原则:

if attribute Struct=Prefix1 then executes (typeset) the command "numero" etc.

我使用 xmltex 因为它看起来更容易:)

//编辑2:

同时我的 Latex 代码排版正确。Fancyheadr 也正常工作。对我来说,这主要是关于是否有可能满足我的主要要求在 xmltex 中映射具有多个属性的元素,因此我不会在每个 xml 文档中手动输入命令 numero、type、date 和 title。

相关内容