texlive[55784] Master/texmf-dist: nanicolle (8jul20)

commits+karl at tug.org commits+karl at tug.org
Wed Jul 8 23:17:01 CEST 2020


Revision: 55784
          http://tug.org/svn/texlive?view=revision&revision=55784
Author:   karl
Date:     2020-07-08 23:17:01 +0200 (Wed, 08 Jul 2020)
Log Message:
-----------
nanicolle (8jul20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/README.md
    trunk/Master/texmf-dist/tex/xelatex/nanicolle/nanicolle.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.tex
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.tex
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.tex
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.tex
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.pdf
    trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.tex

Modified: trunk/Master/texmf-dist/doc/xelatex/nanicolle/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/README.md	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/README.md	2020-07-08 21:17:01 UTC (rev 55784)
@@ -1,7 +1,9 @@
 nanicolle
 =======
 
-`nanicolle` is a LaTeX package providing class `nanicolle.cls` for typesetting labels of collection and of identification in Chinese for plant herbarium specimens.
+`nanicolle` is a LaTeX package providing class `nanicolle.cls` for typesetting 
+collection labels and identification labels in Chinese style or in western style 
+for herbarium specimens.
 
 Documents using class `nanicolle` can only be compiled with XeLaTeX by far.
 
@@ -8,7 +10,7 @@
 Contributing
 ------------
 
-This package is developed and maintained by Yuchang Yang < yang.yc.allium at gmail.com >.
+This package is authored and maintained by Yuchang Yang < yang.yc.allium at gmail.com >.
 
 Discussions and questions are welcome.
 
@@ -15,7 +17,7 @@
 Copyright and Licence
 ---------------------
 
-    Copyright (C) 2016--2019 Yuchang Yang < yang.yc.allium at gmail.com >
+    Copyright (C) 2016--2020 Yuchang Yang < yang.yc.allium at gmail.com >
     ----------------------------------------------------------------------
     
     This work may be distributed and/or modified under the
@@ -31,7 +33,9 @@
     The Current Maintainer of this work is Yuchang Yang.
     
     This work consists of:
-      - the class file: [nanicolle.cls];
-      - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
-      - the manual files: [nanicolle.tex, nanicolle.pdf, README.md];
-      - the example files: [nanicolle-example.tex, nanicolle-example.pdf].
+	  - the class file: [nanicolle.cls];
+	  - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
+	  - the manual files: [nanicolle-doc-zh.tex, nanicolle-doc-zh.pdf, 
+						   nanicolle-doc-en.tex, nanicolle-doc-en.pdf, README.md];
+	  - the example files: [nanicolle-ex-zh.tex, nanicolle-ex-zh.pdf,
+							nanicolle-ex-en.tex, nanicolle-ex-en.pdf].

Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf	2020-07-08 21:17:01 UTC (rev 55784)

Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -0,0 +1,296 @@
+%% nanicolle-doc-en.tex
+%% Copyright 2016--2020 Yuchang Yang < yang.yc.allium at gmail.com >
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% 
+% The Current Maintainer of this work is Yuchang Yang.
+%
+% This work consists of:
+%   - the class file: [nanicolle.cls];
+%   - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
+%   - the manual files: [nanicolle-doc-zh.tex, nanicolle-doc-zh.pdf, 
+%                        nanicolle-doc-en.tex, nanicolle-doc-en.pdf, README.md];
+%   - the example files: [nanicolle-ex-zh.tex, nanicolle-ex-zh.pdf,
+%                         nanicolle-ex-en.tex, nanicolle-ex-en.pdf].
+%%
+
+% arara: xelatex
+% arara: xelatex
+
+\documentclass[a4paper]{article}
+
+\usepackage[top=32mm,bottom=32mm,textwidth=39em]{geometry}
+\usepackage{marvosym}
+\usepackage{metalogo}
+\usepackage{rulerbox}
+\usepackage{array}
+	\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
+	\newcolumntype{^}{>{\currentrowstyle}}
+	\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
+\usepackage{enumitem}
+	\setlist[description]{font=\color{mikudark}\bfseries,leftmargin=2em}
+\usepackage{multicol}
+	\setlength\columnsep{3em}
+	\setlength\columnseprule{0.4pt}
+\usepackage{adjustbox}
+\usepackage{nth}
+\usepackage{tikz}
+\usepackage{color}
+	\definecolor{mikudark}{RGB}{19, 149, 139}
+\newbox\mynmy
+\sbox\mynmy{%
+	\smash{\raisebox{-5mm}{\begin{tikzpicture}[x=7mm,y=7mm]
+	\draw (0,1.2)
+		.. controls (0.3,0.9) and (0.2,0.4) .. (0.1,0.3)
+		.. controls (-0.5,-0.2) and (-0.3,1) .. (0.1,0.3)
+		.. controls (0.1005,0.299) .. (0.11,0.31)
+		.. controls (0.6,0.9) and (1.4,1.1) .. (1.5,1)
+		.. controls (1.6,0.9) and (1.5,0.7) .. (1.4,0.6)
+		.. controls (1.39,0.58) .. (2.8,1.3);
+	\draw (-0.42,0.38) .. controls (-0.22,0.39) .. (-0.1,0.35);
+	\end{tikzpicture}}}}
+
+\makeatletter
+\let\url\texttt
+\let\pkgname\textsf
+\let\uppercase\relax
+\def\zh#1{{\fontspec{SimSun}#1}}
+\def\@fnsymbol#1{\ifcase#1\or*\or\Letter\fi}
+\def\qtimes{\ensuremath{\times}}
+\def\tab{\penalty-\@ne\kern1pt\ensuremath{\rightarrow}\kern1pt\relax}
+\def\uspace{\textvisiblespace\allowbreak}
+\def\@lan{\ensuremath{\langle}}
+\def\@ran{\ensuremath{\rangle}}
+\def\param#1{\textrm{\@lan\textit{#1}\@ran}}
+\def\stopurl{\rlap{\char00}} % WHY URL IS TO GRAB EVERYTHING IT SEES?
+\long\def\cmd#1{{\ttfamily\color{mikudark}#1}}
+\long\def\pbox#1{\leavevmode\parbox{.86\linewidth}{\cmd{#1}}\kern-.03\linewidth}
+\long\edef\[#1\]{$$\noexpand\pbox{\noexpand\raggedright#1\par}$$}
+\catcode`\$=\active 
+\def$#1${\cmd{#1}}
+\newcount\itemcnt
+	\def\clearcnt{\itemcnt\z@}
+	\def\@black#1{{\color{black}\rmfamily#1}}
+	\def\@theitem{\global\advance\itemcnt\@ne\@black{\romannumeral\the\itemcnt. }}
+	\def\@blackperiod{\@black{. }\penalty-\tw@\@gobble}
+	\def\@blackcolon{\@black{; }\penalty-\tw@}
+	\def\ritem#1{\mbox{\@theitem#1}\@ifnextchar*\@blackperiod\@blackcolon}
+\makeatother
+	
+\title{\pkgname{nanicolle} for herbarium specimen labels%
+	\footnote{Github repository: \url{https://github.com/Mikumikunisiteageru/nanicolle}\stopurl.}}
+\author{\zh{杨宇昌} (Yuchang \textsc{Yang})%	
+	\footnote{Email address: \url{yang.yc.allium at gmail.com}\stopurl.}%
+	\qquad \box\mynmy\kern-1cm}
+\date{July \nth{8}, 2020\qquad ver.~2.02}
+\frenchspacing 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+
+\maketitle
+
+\parskip=1ex\relax
+
+Herbarium specimens are plant material well preserved as samples of plant populations. The plant material itself is insufficient to reflect all important information of the population, so it is required to prepare a fully recorded \emph{collection label} along with the material. Plant taxonomists may study a herbarium specimen and determine which species the population belongs to, and such comments are presented on \emph{identification labels} and then pasted on the specimen sheet.
+
+\pkgname{nanicolle} is a \LaTeX\ document class for typesetting collection and identification labels for herbarium specimens, in Chinese style or in western style using English. Labels mentioned hereinafter are by default in western style, which uses a really different layout from the Chinese version (see the Chinese manual for details). Collection and identification labels can be typeset by macros $\string\collect$ and $\string\identify$ (NB: both lower case!) respectively. The output file can be printed on A4 papers (\ensuremath{297\times210} mm). 
+
+Documents in this class can only be compiled with \XeLaTeX{}.
+
+\pkgname{nanicolle} is distributed under the terms of \LaTeX{} Project Public License (LPPL) 1.3c\footnote{Details of the license are available on \url{http://www.latex-project.org/lppl.txt}\stopurl.}. It depends on package collection \pkgname{C\TeX{}} as well as packages including 
+	\pkgname{calc}, 
+	\pkgname{color}, 
+	\pkgname{geometry}, 
+	\pkgname{graphicx}, 
+	\pkgname{listofitems}, 
+	\pkgname{multicol}\footnote{Since applying \pkgname{nanicolle} document class leads to indirect use of \pkgname{multicol} package, if one wishes to employ \pkgname{nanicolle} for commercial use, he/she may be subject to moral obligation of \pkgname{multicol} (see the notice in its source file for details).}, 
+	\pkgname{xstring},
+etc.
+
+\vfill\tableofcontents\vfill\null
+
+\clearpage
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Structure of documents in \pkgname{nanicolle} class}\label{usage}
+
+A document in the \pkgname{nanicolle} class should be a plain text file with the extension \texttt{.tex}. The document generally should consist of the five following parts:
+\begin{enumerate}
+	\item Document class loader, i.e. $\string\documentclass[\param{option list}]\{nanicolle\}$. $\param{option}$s seperated by comma $,$ in the $\param{option list}$ control the behavior of the document. For example, $nomap$ suppresses the map on collection labels, and $autoduplicate$ repeats the collection labels according to their $\param{duplicate count}$s (vide infra). When no $\param{option}$ is specified, one can simply write $\string\documentclass\{nanicolle\}$ instead.
+	\item Optional $\string\heading\{\param{heading}\}$ and $\string\subheading\{\param{subheading}\}$ in the preamble to customize content of the headings on each collection label. Both the length of $\param{heading}$ and $\param{subheading}$ should not exceed the line width. One can make a one-line heading by skipping the $\string\subheading$. If both $\string\heading$ and $\string\subheading$ are skipped, no heading will occur on the collection labels.
+	\item $\string\begin\{document\}$, as the name implies.
+	\item Lines starting with either $\string\collect$ or $\string\identify$ to typeset collection or identification labels respectively. Syntaxes of these macros will be declared in Section~\ref{collect} and Section~\ref{identify}. 
+	\item $\string\end\{document\}$.
+\end{enumerate}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{The macro $\textbackslash collect$ for collection labels}\label{collect}
+
+The syntax of the macro $\string\collect$ is
+\[%
+	\hangindent=2em\relax
+	\string\collect
+		\tab\param{record number}\tab\param{collectors}\tab\param{collecting number}%
+		\tab\param{collecting date}\tab\param{family}\tab\param{vernacular name}%
+		\tab\param{scientific name}\tab\param{photo number}\tab\param{duplicate count}%
+		\tab\param{location}\tab\param{longitude}\tab\param{latitude}%
+		\tab\param{altitude}\tab\param{habitat}\tab\param{life form}%
+		\tab\param{height}\tab\param{diameter at breast height}\tab\param{note}%
+\]
+where $\tab$ denotes a horizontal tab (U+0009, the character that the tab key inputs). Each $\string\collect$ macro followed by its parameters must exclusively occupy a single line without comment sign, and the line should begin immediately with the macro. 
+Parameters can be left empty (some cannot), but even so the tabs seperating them should never be omitted. 
+The requirements of each parameter of $\string\collect$ are listed as follows. 
+
+\begin{enumerate}
+	\item $\param{record number}$: Only for the convenience of data organizing, not printed on collection label.
+	\item $\param{collectors}$: Names of the persons or the team who collected the specimen. When there were more than one collectors, all their names should be listed here. When a team was involved, it is strongly suggested to list its members' names in parentheses after the team name. $\param{collectors}$ \textsl{cannot} be empty. 
+	\item $\param{collecting number}$: Serial number indexing the specimen collection of the first component of $\param{collectors}$. Traditionally it is suggested to apply sequences of increasing integers starting from 1 to $\param{collecting number}$.
+	\item $\param{collecting date}$: Date when the specimen was collected, better expressed in arabic numerals following the formula $\param{year}.\param{month}.\param{date}$. Parameter $\param{collecting date}$ \textsl{cannot} be empty. 
+	\item $\param{family}$: Preliminary scientific name (in Latin) of the family.
+	\item $\param{vernacular name}$: Preliminary vernacular name of the species, in local language. Not printed on collection label.
+	\item $\param{scientific name}$: Preliminary scientific name (in Latin) of the species, better with no author citation especially when uncertain. Unless empty, $\param{scientific name}$ follows the fomula $\param{generic part}\param{specific part}\param{infraspecific part}$. \par
+		In the formula above, there are two possible patterns for the $\param{generic part}$:
+		\[\clearcnt
+			\ritem{\param{genus name}}%
+			\ritem{\qtimes\param{genus name}}*\]
+		$\param{specific part}$ has nine possible patterns:
+		\[\clearcnt
+			\ritem{\uspace sp.}%
+			\ritem{\uspace sp.\uspace nov.}%
+			\ritem{\uspace\param{species epithet}}%
+			\ritem{\uspace\qtimes\param{species epithet}}%
+			\ritem{\uspace aff.\uspace\param{species epithet}}%
+			\ritem{\uspace aff.\uspace\qtimes\param{species epithet}}%
+			\ritem{\uspace cf.\uspace\param{species epithet}}%
+			\ritem{\uspace cf.\uspace\qtimes\param{species epithet}}%
+			\ritem{\uspace '\param{cultispecies name}'}*\]
+		where $\uspace$ denotes a normal space (U+0020). 
+		$\param{infraspecific part}$ can be not empty when and only when $\param{specific part}$ fits its pattern iii or iv, at this time having four possible patterns:
+		\[\clearcnt
+			\ritem{\uspace subsp.\uspace\param{subspecific epithet}}%
+			\ritem{\uspace var.\uspace\param{varietal epithet}}%
+			\ritem{\uspace f.\uspace\param{form epithet}}%
+			\ritem{\uspace '\param{cultivar name}'}*\]
+    Control sequences like $\string\textit$ manually designating font style are unavailable in $\param{scientific name}$.
+	\item $\param{photo number}$: Only for the convenience of data organizing, not printed on collection label.
+	\item $\param{duplicate count}$: Count of specimen duplicates with the same $\param{collecting number}$, expressed in arabic numerals; not printed on collection label. When $autoduplicate$ is loaded as an $\param{option}$ of the document class, each $\string\collect$ macro automatically makes $\param{duplicate count}$ duplicate collection labels.
+	\item $\param{location}$: Location where the specimen was collected, expressed in natural way, providing as much detailed information as possible, including country, province, city, town, etc., and the specific locality (probably with respect to some landmarks), so that other researchers can locate the population. $\param{location}$ \textsl{cannot} be empty.
+	\item $\param{longitude}$: Longitude value of the $\param{location}$, a decimal floating number in degree (without unit), positive for east, negative for west. Sexagesimal expression (in degree, minute, and second) are not acceptable.
+	\item $\param{latitude}$: Latitude value of the $\param{location}$, a decimal floating number in degree (without unit), positive for north, negative for south. Sexagesimal expression (in degree, minute, and second) are not acceptable.
+	\item $\param{altitude}$: Altitude value of the $\param{location}$, in meter (without unit), positive or possibly negative.
+	\item $\param{habitat}$: Living habitat of the population in the wild, e.g. $slopes$, $forest margins$, $streamsides$; or $cultivated$ for those in garden or arboretum.
+	\item $\param{life form}$: Life form of typical individuals in the population, e.g. $tree$, $shrub$, $vine$.
+	\item $\param{height}$: Height of typical individuals in the population, in meter (without unit). 
+	\item $\param{diameter at breast height}$: Diameter at breast height (DBH) of typical individuals in the population, in centimeter (without unit), only applying to trees or large shrubs.
+	\item $\param{note}$: Other valuable information that is no longer observable on herbarium specimens, in aspects of morphology (e.g. color \& smell of different parts, texture of the bark), ecology (e.g. richness, pollinator species), or ethnobotany (e.g. local usages). Different from other parameters of $\string\collect$, $\param{note}$ is a complete sentence (unless empty), so that the leading letter of the first word should be capitalized, and a punctuation (usually period) is required at the end.
+\end{enumerate}
+
+\def\degree{\kern0.1ex\ensuremath{^\circ}}
+By default, when preparing a collection label, \pkgname{nanicolle} typesets a map below the main body of the label, illustrating the position of the coordinates, given that the $\param{longitude}$ lies between 73\degree E and 136\degree E, and the $\param{latitude}$ lies between 17\degree N and 54\degree N. One can load a $nomap$ $\param{option}$ into the document class (Section~\ref{usage}) to suppress the typesetting of maps. It is also possible to redefine the geographic range of the maps. 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{The macro $\textbackslash identify$ for identification labels}\label{identify}
+
+The syntax of the macro $\string\identify$ is
+\[%
+	\hangindent=2em\relax
+	\string\identify
+		\tab\param{record number}\tab\param{scientific name}\tab\param{vernacular name}%
+		\tab\param{identifier}\tab\param{identifier code}%
+		\tab\param{identifying date}\tab\param{comment}%
+\]
+Just as $\string\collect$, each $\string\identify$ macro with its parameters must exclusively occupy a single line. 
+Parameters can be left empty unless specialized, but the tabs seperating them cannot be omitted. 
+The requirements of each parameter of $\string\identify$ are listed as follows. 
+
+\begin{enumerate}
+	\item $\param{record number}$: Only for the convenience of data organizing, not printed on identification label.
+	\item $\param{scientific name}$: Scientific name with author citation of the species that the identification yielded, following the formula $\param{generic part}\param{specific part}\param{infraspecific part}\uspace\param{author citation}$. As that of $\string\collect$, macros for manually manipulating font style are unavailable here either. $\param{scientific name}$ \textsl{cannot} be empty.
+	\item $\param{vernacular name}$: Common name associated with $\param{scientific name}$ of the species.
+	\item $\param{identifier}$: Full name of the identifier.
+	\item $\param{identifier code}$: Standard form (taxonomic) of the name of the identifier. $\param{identifier}$ and $\param{identifier code}$ \textsl{cannot} be both empty, while it is suggested to leave either of them empty in a record. 
+	\item $\param{identifying date}$: Date when the specimen was identified, following the same restriction as $\param{collecting date}$ for $\string\collect$. $\param{identifying date}$ \textsl{cannot} be empty.
+	\item $\param{comment}$: Comment about the identification worth mention. Different from other parameters of $\string\identify$, $\param{comment}$ is a complete sentence (unless empty), so that the leading letter of the first word should be capitalized, and a punctuation (usually period) is required at the end.
+\end{enumerate}
+
+The $\string\identify$ macro has no $\param{duplication count}$ parameter, so identification label will not be automatically repeated. When repeating is wanted, one has to repeat the lines with $\string\identify$ manually.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Other issues}
+
+\subsection{Store original data in a spreadsheet software}
+
+Using tabs $\tab$ as delimiters between parameters is not the convention of \LaTeX{}. This special rule for delimiters was designed to make \pkgname{nanicolle} able to read the plain text lines from a spreadsheet software\footnote{Microsoft Office Excel is an instance of spreadsheet software.}. When some rows of cells are pasted from a spreadsheet software to plain text environment, it is automatically converted to TSV (Tab-Separated Values) format --- rows/lines are separated by end-of-line character(s), and cells within a row/line are separated by tab. This mechanism allows users to establish a database for collection or identification records in a spreadsheet software (as Table~\ref{table}). When one wants to print labels according to certain records, he/she can simply copy the involved rows from the database, paste them in a \LaTeX{} source file, and then call \pkgname{nanicolle} to deal with them. Databases can also contain extra information after the parameters required, which will be ignored by $\string\collect$ or $\string\identify$ and will not affect the output. 
+
+\begin{table}[htbp]
+	\centering
+	\begin{tabular}{|+c|*{4}{^c|}}
+		\hline
+		\rowstyle{\bfseries} macro & record number & collectors & collecting number & \ensuremath{\cdots} \\\hline
+		\string\collect & 1 & Foo, Bar & 3141 & \ensuremath{\cdots} \\\hline
+		\string\collect & 2 & Foo, Bar & 3142 & \ensuremath{\cdots} \\\hline
+		\string\collect & 3 & Foo, Bar & 3143 & \ensuremath{\cdots} \\\hline
+	\end{tabular}
+	\caption{A sample of database for collection records in a spreadsheet database}\label{table}
+\end{table}
+
+\subsection{Set the printer correctly}
+
+Before the PDF file from \pkgname{nanicolle} is sent to a printer, it is necessary to do some settings. When printing an A4-sized PDF file on to an A4-sized paper with a home printer, the file is usually shrunk a little bit smaller to fit into the printable range. If so, since \pkgname{nanicolle} uses a four-column landscape layout, the outer columns would be some broader than the inner ones. To avoid unbalance, one can select to print ``at actual size'', ``at absolute size'', or make the scale ``100\%''.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Change history}
+
+\pkgname{nanicolle} was originally designed for making Chinese collection labels and identification labels, with its first version completed on 2016/8/3 (ver. 1.01). Later on 2017/10/22 (ver. 1.07), the typesetting of western style collection labels was carried out for an international plant expedition, and that was the first version with maps. The macro for collection labels in western style had been temporarily hidden since 2019.4.28 (ver. 2.00), until rewritten and republished on 2020.7.8 (ver. 2.02). 
+For more details, please refer to the Chinese manual \texttt{nanicolle-zh.PDF}. 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{A full example using \pkgname{nanicolle}}
+
+The following is a full example file using document class \pkgname{nanicolle}. It can be found as \texttt{nanicolle-ex-en.tex} in the package. To display it more clearly, the $\uspace$ denotion for space is no longer used in this example. Actual lines correspond with line numbers in the left. An actual line may be so long that it is wrapped here, just as in text editors, but remember, these wrapped parts in fact belong to a single line, as there is no end-of-line character in between. 
+
+\begingroup
+\catcode`\^^I\active\let^^I\tab
+\[%
+\clearcnt
+\def\zh#1{{\fontspec{FangSong}#1}}
+\everypar={\hangindent=2em\relax\advance\itemcnt1\relax%
+\leavevmode\llap{\number\itemcnt\quad}}
+\string\documentclass[autoduplicate]\string{nanicolle\string}\par
+\string\begin\string{document\string}\par
+\string\collect	1997	Yuchang Yang (\zh{杨宇昌})	5731	2018.5.8	Caprifoliaceae	\zh{苦糖果}	Lonicera fragrantissima subsp. standishii	7609	1	between Dongjiamen Village (\zh{董家门村}) and Dongnao (\zh{洞垴}), Guantao Town (\zh{管陶乡}), Wu'an City (\zh{武安市}), Hebei Province (\zh{河北省}), China	113.759512	36.951612	1356.0	meadow thickets on slopes	shrub	3		Ripe fruit orange-red, tasting sweet with minimal bitter.\par
+\string\collect	1545	Sino-Nepal Joint Plant Expedition (Haining Qin, Prabin Bhandari, Tirtha Raj Pandey, Bijay Raj Subedee, Yuchang Yang, Shuren Zhang)	601	2017.9.18	Fagaceae		Quercus glauca	-	2	Talkot, Bajhang District, Nepal			1700	forests	tree	10	15	Fruiting. Associated with \string\textit\string{Rhododendron arboreum\string} and \string\textit\string{Lyonia ovalifolia\string}.\par
+\string\identify	392	Allium atrosanguineum var. tibeticum (Regel) G. H. Zhu \string& Turland	\zh{藏葱} (Z\string\`ang C\string\=ong)	Yuchang Yang		2018.10.7	\par
+\string\identify	176	Acer davidii subsp. grosseri (Pax) P. C. de Jong		Yuchang Yang		2018.4.19	\par
+\string\identify	230	Erysimum \qtimes cheiri (L.) Crantz		Yuchang Yang		2018.5.17	\par
+\string\identify	590	Koenigia alpina (All.) T. M. Schust. \string& Reveal		Yuchang Yang		2019.4.13	\par
+\string\end\string{document\string}\par
+\]
+\endgroup
+
+Locate to the path of the example file in a command line window, then type and execute \texttt{xelatex nanicolle-ex-en}. After the compilation, the output PDF file (see Figure~\ref{example}) \texttt{nanicolle-ex-en.PDF} can be found in the same path.
+
+\begin{figure}[htbp]
+	\centering
+	\fboxsep=-.2pt\relax
+	\hbox{}\hidewidth\rulerbox{\vbox{\kern-.2pt\hbox{\kern-.2pt\fbox{\includegraphics*[bb=0cm 0cm 14.85cm 21cm]{nanicolle-ex-en.pdf}}\kern-.2pt}\kern-.2pt}}\hidewidth\hbox{}\par
+	\caption{Left two columns in the sample PDF file \texttt{nanicolle-ex-en.pdf}}\label{example}
+\end{figure}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-en.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf	2020-07-08 21:17:01 UTC (rev 55784)

Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -0,0 +1,355 @@
+%% nanicolle-doc-zh.tex
+%% Copyright 2016--2020 Yuchang Yang < yang.yc.allium at gmail.com >
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% 
+% The Current Maintainer of this work is Yuchang Yang.
+%
+% This work consists of:
+%   - the class file: [nanicolle.cls];
+%   - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
+%   - the manual files: [nanicolle-doc-zh.tex, nanicolle-doc-zh.pdf, 
+%                        nanicolle-doc-en.tex, nanicolle-doc-en.pdf, README.md];
+%   - the example files: [nanicolle-ex-zh.tex, nanicolle-ex-zh.pdf,
+%                         nanicolle-ex-en.tex, nanicolle-ex-en.pdf].
+%%
+
+% arara: xelatex
+% arara: xelatex
+
+\documentclass[a4paper]{ctexart}
+	\CTEXsetup[format={\Large\bfseries}]{section}
+
+\usepackage[top=32mm,bottom=32mm,textwidth=39em]{geometry}
+\usepackage{marvosym}
+\usepackage{metalogo}
+\usepackage{rulerbox}
+\usepackage{tikz}
+\usepackage{color}
+	\definecolor{mikudark}{RGB}{19, 149, 139}
+\usepackage{array}
+	\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
+	\newcolumntype{^}{>{\currentrowstyle}}
+	\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
+\usepackage{enumitem}
+	\setlist[description]{font=\color{mikudark}\bfseries,leftmargin=2em}
+\usepackage{multicol}
+	\setlength\columnsep{3em}
+	\setlength\columnseprule{0.4pt}
+\usepackage{adjustbox}
+\newbox\mynmy
+\sbox\mynmy{%
+	\smash{\raisebox{-5mm}{\begin{tikzpicture}[x=7mm,y=7mm]
+	\draw (0,1.2)
+		.. controls (0.3,0.9) and (0.2,0.4) .. (0.1,0.3)
+		.. controls (-0.5,-0.2) and (-0.3,1) .. (0.1,0.3)
+		.. controls (0.1005,0.299) .. (0.11,0.31)
+		.. controls (0.6,0.9) and (1.4,1.1) .. (1.5,1)
+		.. controls (1.6,0.9) and (1.5,0.7) .. (1.4,0.6)
+		.. controls (1.39,0.58) .. (2.8,1.3);
+	\draw (-0.42,0.38) .. controls (-0.22,0.39) .. (-0.1,0.35);
+	\end{tikzpicture}}}}
+
+\makeatletter
+\let\url\texttt
+\let\emph\textbf
+\let\pkgname\textsf
+\let\uppercase\relax
+\def\@fnsymbol#1{\ifcase#1\or*\or\Letter\fi}
+\def\qtimes{\ensuremath{\times}}
+\def\tab{\penalty-\@ne\kern1pt\raisebox{.2ex}{\ensuremath{\rightarrow}}\kern1pt\relax}
+\def\uspace{\textvisiblespace\allowbreak}
+\def\@lan{\raisebox{.2ex}{\ensuremath{\langle}}}
+\def\@ran{\raisebox{.2ex}{\ensuremath{\rangle}}}
+\def\param#1{\textrm{\@lan\textit{#1}\@ran}}
+\def\stopurl{\rlap{\char00}} % WHY URL IS TO GRAB EVERYTHING IT SEES?
+\long\def\cmd#1{{\ttfamily\color{mikudark}#1}}
+\long\def\pbox#1{\leavevmode\parbox{.86\linewidth}{\cmd{#1}}\kern-.03\linewidth}
+\long\edef\[#1\]{$$\noexpand\pbox{\noexpand\raggedright#1\par}$$}
+\catcode`\$=\active 
+\def\check at nextchar{%
+	\if\@nextchar、\unskip\fi
+	\if\@nextchar,\unskip\fi
+	\if\@nextchar:\unskip\fi
+	\if\@nextchar;\unskip\fi
+	\if\@nextchar。\unskip\fi}
+\def$#1${\CJKecglue\cmd{#1}\CJKecglue
+	\futurelet\@nextchar\check at nextchar}
+\newcount\itemcnt
+	\def\clearcnt{\itemcnt\z@}
+	\def\@black#1{{\color{black}\rmfamily#1}}
+	\def\@theitem{\advance\itemcnt\@ne\@black{\romannumeral\the\itemcnt.\space}}
+	\def\@blackperiod{\@black{。}\@gobble}
+	\def\@blackcolon{\@black{;}\penalty-\@ne}
+	\def\ritem#1{\@theitem#1\@ifnextchar*\@blackperiod\@blackcolon}
+\makeatother
+
+\title{植物标本标签文档类\pkgname{nanicolle}%
+	\footnote{本项目的Github仓库地址为\url{https://github.com/Mikumikunisiteageru/nanicolle}\stopurl 。}}
+\author{杨宇昌%	
+	\footnote{电子邮箱为\url{yang.yc.allium at gmail.com}\stopurl 。}%
+	\qquad\box\mynmy\kern-1cm}
+\date{2020年7月8日\qquad ver.~2.02}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+
+\maketitle
+
+\parskip=1ex\relax
+
+植物标本是经处理能够长期保存的植物材料。它们是植物居群的样本,通过标本可以了解植物居群。由于植物材料本身并不能完整地反映居群的所有重要信息,标本采集者需要作出补充并记录成\emph{采集标签},与标本一同保存。植物分类学者可以研究判定标本对应居群所属的物种,其鉴定意见则以\emph{鉴定标签}的形式,附在标本上。
+
+\LaTeX{}文档类\pkgname{nanicolle}可排版植物标本用的中式或西式的采集标签和鉴定标签。中式的两种标签分别由$\string\Collect$命令和$\string\Identify$命令产生。要排版西式的采集标签和鉴定标签,需改用小写的$\string\collect$和$\string\identify$命令,格式和前者大致相同,具体要求和用例见英文文档。本中文文档中所说的标签都默认是中式的。
+标签会安排在横向A4尺寸、分为四栏的页面上,可以用A4纸张打印。目前,\pkgname{nanicolle}文档类仅支持\XeLaTeX{}引擎编译。
+
+\pkgname{nanicolle}按 The \LaTeX{} Project Public License (LPPL) 1.3c 许可证\footnote{LPPL 1.3c 许可证的详细内容见\url{http://www.latex-project.org/lppl.txt}\stopurl 。}授权发布。它依赖\pkgname{C\TeX{}}宏集和
+	\pkgname{calc}、
+	\pkgname{color}、
+	\pkgname{geometry}、
+	\pkgname{graphicx}、
+	\pkgname{listofitems}、
+	\pkgname{multicol}\footnote{由于指定 \pkgname{nanicolle} 文档类会间接地构成对 \pkgname{multicol} 宏包的使用,若要将 \pkgname{nanicolle} 用于商业用途,则需要向 \pkgname{multicol} 宏包的作者支付授权费用,详情见该宏包的授权许可证。}、
+	\pkgname{xstring}
+等宏包。
+
+\parskip=0ex\relax
+
+% \vfill
+\tableofcontents\vfill\null
+
+\clearpage
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\pkgname{nanicolle}类文档的结构}\label{usage}
+
+一份使用\pkgname{nanicolle}类的文档应是包含以下5部分、文件名以后缀 \texttt{.tex} 结尾的纯文本:
+\begin{enumerate}
+	\item 载入\pkgname{nanicolle}文档类,即$\string\documentclass[\param{选项}]\{nanicolle\}$。
+		其中,$\param{选项}$控制文档的行为,例如$nomap$可禁用采集标签中的地图,$autoduplicate$则能按标本份数重复采集标签;选项超过一个时,其间要用$,$分隔。不需要加载选项时,可写$\string\documentclass\{nanicolle\}$。
+	\item 在导言区使用$\string\heading$和$\string\subheading$命令定义定制内容。要在采集标签上方添加统一的标题,可写$\string\heading\{\param{标题}\}$;副标题如需要则可由$\string\subheading\{\param{副标题}\}$命令产生。二者长度均不得超过一行。若跳过此部分,则采集标签上方无标题。
+	\item 正文开始,即$\string\begin\{document\}$。
+	\item 在正文中使用$\string\Collect$和$\string\Identify$两种命令分别产生采集标签和鉴定标签,每个命令占一行。两种命令的格式分别参见第 \ref{collect} 和第 \ref{identify} 节。
+	\item 正文结束,即$\string\end\{document\}$。
+\end{enumerate}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{用\hbox{}$\textbackslash Collect$命令生成采集标签}\label{collect}
+
+$\string\Collect$命令的格式为
+\[%
+	\hangindent=2em\relax
+	\string\Collect
+		\tab\param{记录号}\tab\param{采集人}\tab\param{采集号}%
+		\tab\param{采集日期}\tab\param{科名}\tab\param{中文名}%
+		\tab\param{学名}\tab\param{照片号}\tab\param{标本份数}%
+		\tab\param{产地}\tab\param{经度}\tab\param{纬度}%
+		\tab\param{海拔}\tab\param{生境}\tab\param{生活型}%
+		\tab\param{体高}\tab\param{胸径}\tab\param{附注}%
+\]
+当中$\tab$表示水平制表符(U+0009,可按键盘Tab键输入)。每行最多能有一个$\string\Collect$命令;每个$\string\Collect$命令须出现在一行开始处,其所有参数必须出现在同一行中;$\string\Collect$所在的行不能有注释符号。
+某些参数可以为空,但$\tab$都须保留。
+以下分别说明诸参数。
+
+\begin{enumerate}
+	\item $\param{记录号}$:仅为数据组织方便而设,不在采集标签上出现。
+	\item $\param{采集人}$:标本的采集者的姓名。如有多个采集者,应列举姓名,其间可以用顿号分隔;如果要填写采集团队名称,也应注明其成员。此参数不得为空。
+	\item $\param{采集号}$:属于$\param{采集人}$中第一个采集者的记录标本采集的序列号码。建议为简单的整数,从1开始递增。
+	\item $\param{采集日期}$:采集植物材料的日期,可使用$\param{年}.\param{月}.\param{日}$的阿拉伯数字表示。此参数不得为空。
+	\item $\param{科名}$:临时鉴定的科的名称,建议使用中文表示。
+	\item $\param{中文名}$:临时鉴定的植物中文名。
+	\item $\param{学名}$:临时鉴定的植物学名,建议不带作者引证。当非空时,可用通式$\param{属级部分}\param{种级部分}\param{种下等级部分}$表示。
+		其中,$\param{属级部分}$有2类结构:
+		\[\clearcnt
+			\ritem{\param{属名}}%
+			\ritem{\qtimes\param{属名}}*\]
+		$\param{种级部分}$有9类结构:
+		\[\clearcnt
+			\ritem{\uspace sp.}%
+			\ritem{\uspace sp.\uspace nov.}%
+			\ritem{\uspace\param{种加词}}%
+			\ritem{\uspace\qtimes\param{种加词}}%
+			\ritem{\uspace aff.\uspace\param{种加词}}%
+			\ritem{\uspace aff.\uspace\qtimes\param{种加词}}%
+			\ritem{\uspace cf.\uspace\param{种加词}}%
+			\ritem{\uspace cf.\uspace\qtimes\param{种加词}}%
+			\ritem{\uspace '\param{栽培种名}'}*\]
+		当中的$\uspace$表示一个空格(U+0020)。$\param{种下等级部分}$仅当$\param{种级部分}$为结构iii或结构iv时可以非空,此时它有4类结构:
+		\[\clearcnt
+			\ritem{\uspace subsp.\uspace\param{亚种加词}}%
+			\ritem{\uspace var.\uspace\param{变种加词}}%
+			\ritem{\uspace f.\uspace\param{变型加词}}%
+			\ritem{\uspace '\param{栽培品种名}'}*\]
+    此参数中不能用$\string\textit$之类的控制序列手动控制字体样式。
+	\item $\param{照片号}$:仅为数据组织方便而设,不在采集标签上出现。
+	\item $\param{标本份数}$:标本的同号复份数目,用阿拉伯数字表示。不在采集标签上出现。当文档类的$\param{选项}$包含$autoduplicate$时,每个$\string\Collect$命令将输出$\param{标本份数}$张重复的采集标签。
+	\item $\param{产地}$:植物材料的采集地的自然语言表述,要包含完整的省级、县级、乡级行政单元序列和小地点,小地点可参照地标表示,以便考证与回访。此参数不得为空。
+	\item $\param{经度}$:植物材料采集地的经度坐标,用十进制的浮点数表示,以角度为单位,不带单位符号,正数为东经,负数为西经。不接受度分秒表示。
+	\item $\param{纬度}$:植物材料采集地的纬度坐标,用十进制的浮点数表示,以角度为单位,不带单位符号,正数为北纬,负数为南纬。不接受度分秒表示。
+	\item $\param{海拔}$:植物材料采集地的海拔高度,用阿拉伯数字表示,以米为单位,不带单位符号,可以为负数。
+	\item $\param{生境}$:植物居群的野外生活环境,如$山地$、$林缘$、$溪边$等,但对于栽培的植物,应填写$栽培$而非具体的生活环境。
+	\item $\param{生活型}$:植物居群的生活型,如$乔木$、$灌木$、$藤本$等。
+	\item $\param{体高}$:植物居群中个体的典型高度,用阿拉伯数字表示,以米为单位,不带单位符号。
+	\item $\param{胸径}$:植物居群中个体的典型胸径,用阿拉伯数字表示,以厘米为单位,不带单位符号。
+	\item $\param{附注}$:包含其他在植物标本上无法观察的有价值的信息,如各部的颜色、气味,树皮的纹理,传粉者,植物在当地的俗名、用途、常见程度等。和以上各参数不同,$\param{附注}$是完整的句子,末尾要有标点。
+\end{enumerate}
+
+\pkgname{nanicolle}文档类默认在经纬度均非空且经度在东经73--136度间、纬度在北纬17--54度间时在采集标签下方输出地图,以标明该坐标的位置。要禁用这个功能,可以在载入文档类时使用$nomap$选项,见第 \ref{usage} 节。
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{用\hbox{}$\textbackslash Identify$命令生成鉴定标签}\label{identify}
+
+$\string\Identify$命令的格式为
+\[%
+	\hangindent=2em\relax
+	\string\Identify
+		\tab\param{记录号}\tab\param{学名}\tab\param{中文名}%
+		\tab\param{鉴定人}\tab\param{鉴定人标准形式}%
+		\tab\param{鉴定日期}\tab\param{批注}%
+\]
+和$\string\Collect$一样,每个$\string\Identify$命令及其所有参数需独占一行。以下就诸参数分别说明。
+
+\begin{enumerate}
+	\item $\param{记录号}$:仅为数据组织方便而设,不在采集标签上出现。
+	\item $\param{学名}$:正式鉴定的植物学名,须带有作者引证,可用通式$\param{属级部分}\param{种级部分}\param{种下等级部分}\param{作者引证}$表示。此参数不得为空。
+	\item $\param{中文名}$:与$\param{学名}$相关联的中文种名。
+	\item $\param{鉴定人}$:标本鉴定者的姓名。
+	\item $\param{鉴定人标准形式}$:标本鉴定者的姓名在分类学上约定的标准形式。此参数与$\param{鉴定人}$不得同时为空。
+	\item $\param{鉴定日期}$:鉴定标本的日期,格式同$\param{采集日期}$。此参数不得为空。
+	\item $\param{批注}$:需另外表明的分类学意见。和以上各参数不同,$\param{批注}$是完整的句子,末尾要有标点。
+\end{enumerate}
+
+不同于$\string\Collect$命令,$\string\Identify$命令不带$\param{标本份数}$参数,故每个$\string\Identify$命令固定地输出一张鉴定标签。要输出重复的鉴定标签,只能手动复制命令所在的行。
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{其他问题}
+
+\subsection{用电子表格软件储存原始数据}
+
+$\string\Collect$与$\string\Identify$之所以不遵照\LaTeX{}惯例而用制表符$\tab$作为参数的定界符,其用意是使得原始数据可以储存电子表格(Spreadsheet)软件\footnote{Microsoft Office Excel 便是一种电子表格软件。}中。当纯文本粘贴到电子表格中时,换行符分隔各行,制表符分隔行内各列。当电子表格的内容粘贴为纯文本时,各行由换行符分隔,行内各列由制表符分隔(形成TSV格式)。事实上,这种规定允许储存于电子表格中的原始数据可以直接为\XeLaTeX{}引擎所读取。具体来说,可以建立一个形如表 \ref{table} 的电子表格来储存原始数据。
+\begin{table}[htbp]
+	\centering
+	\begin{tabular}{|+c|*{8}{^c|}}
+		\hline
+		\rowstyle{\bfseries} 命令 & 记录号 & 采集人 & 采集号 & 采集日期 & 科名 & 中文名 & 学名 & \ensuremath{\cdots} \\\hline
+		\string\Collect & 1 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
+		\string\Collect & 2 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
+		\string\Collect & 3 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
+	\end{tabular}
+	\caption{储存采集标签原始数据的电子表格示例}\label{table}
+\end{table}
+这样,电子表格中的若干行被选中并复制到纯文本环境下后便自动转换成了$\string\Collect$或$\string\Identify$命令要求的格式。而电子表格中的原始数据库在这些命令所要求的参数外还能储存更丰富的信息,这些额外信息会被$\string\Collect$或$\string\Identify$命令忽略,不影响标签的内容。
+
+\subsection{PDF文件的打印设置}
+
+编译得到的PDF文件最终要用打印机打印并裁剪,成为可实际使用的标签。打印机的可打印范围一般比纸面小,故打印机通常默认将文件略为缩小。而\pkgname{nanicolle}采用A4纸横向四列布局,按这样印出来的线条裁切,便会出现两侧的标签宽、中间的标签窄的情形。为避免这种问题,打印PDF文件时应选中“使用原始页面大小”选项。
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{完整实例}
+
+以下是\pkgname{nanicolle}类的一份文档实例,即包中的 \texttt{nanicolle-ex-zh.tex} 文件。实际的行和左侧的行号是对应的,每个$\string\Collect$或$\string\Identify$命令和其所有参数均在同一行中,折行只是便于展示。定位至文件所在目录并运行 \texttt{xelatex nanicolle-ex-zh},编译完后即可得到 \texttt{nanicolle-ex-zh.pdf}(图 \ref{example})。
+\begingroup
+\catcode`\^^I\active\let^^I\tab
+\catcode`\ \active\let \uspace
+\[%
+\clearcnt
+\everypar={\hangindent=2em\relax\advance\itemcnt1\relax%
+\leavevmode\llap{\number\itemcnt\quad}}
+\xeCJKsetup{CJKecglue={}}
+\linespread{1.23}\selectfont
+\string\documentclass[autoduplicate]\string{nanicolle\string}\par
+\string\begin\string{document\string}\par
+\string\Collect	724	杨宇昌	5358	2017.5.29	报春花科	粉报春	Primula farinosa	5992	1	内蒙古自治区赤峰市阿鲁科尔沁旗新民乡西拉沐伦大峡谷园区	117.574461	43.136042	918.6	沼泽化草甸	直立草本	0.2		花粉红色,花梗与花萼常被白粉;与天山报春 \string\textit\string{Primula nutans\string} 混生。\par
+\string\Identify	78	Allium chrysanthum Regel	野葱	杨宇昌		2017.12.7	\par
+\string\Collect	1997	杨宇昌	5731	2018.5.8	忍冬科	苦糖果	Lonicera fragrantissima subsp. standishii	7609	2	河北省邯郸市武安市管陶乡董家门村西至洞垴途中			1356.0	山坡灌草丛	灌木	3		果实橙红色,味甜微苦。\par
+\string\Identify	439	Maianthemum bifolium (L.) F. W. Schmidt	舞鹤草	杨宇昌		2018.12.9	\par
+\string\Identify		Idesia polycarpa var. vestita Diels	毛叶山桐子	杨宇昌		2016.5.20	\par
+\string\Identify	128	Kandelia obovata Sheue, H. Y. Liu \string& J. W. H. Yong	秋茄树	杨宇昌		2018.3.5	\par
+\string\Identify	585	Ulmus lamellosa C. Wang \string& S. L. Chang	脱皮榆	杨宇昌		2019.4.11	\par
+\string\end\string{document\string}\par
+\]
+\endgroup\par
+
+\begin{figure}[htbp]
+	\centering
+	\fboxsep=-.2pt\relax
+	\hbox{}\hidewidth\rulerbox{\vbox{\kern-.2pt\hbox{\kern-.2pt\fbox{\includegraphics*[bb=0cm 0cm 14.85cm 21cm]{nanicolle-ex-zh.pdf}}\kern-.2pt}\kern-.2pt}}\hidewidth\hbox{}\par
+	\caption{样例PDF文件 \texttt{nanicolle-ex-zh.pdf} 的前2栏(左半页)}\label{example}
+\end{figure}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{更新日志}
+\begin{multicols}{2}
+\begin{description}[style=nextline]
+	\parskip=0pt
+	\obeylines
+	\item[ver. 2.02 (2020.7.8)]
+		修正负经纬度值不能解析的错误。
+		中式采集标签的参数取消长度限制。
+		恢复西式采集标签排版功能。
+		新增西式标签样例和英文文档。
+	\item[ver. 2.01 (2019.9.27)] 
+		再改进采集标签中下划线表的实现。
+		支持在附注等参数中直接用\LaTeX{}命令如 $\string\textit$ 等控制字体样式。
+		合并解析拉丁学名的两处代码,允许在采集标签的学名后引证作者。
+	\item[ver. 2.00 (2019.4.28)] 
+		全部代码重构,打包为文档类,重新命名为\pkgname{nanicolle}。
+		新增地图自定义与自动选择功能。
+		暂时删去西式采集标签排版功能。
+		删去标本条码标签排版功能。
+		删去某植物园的建筑地图。
+		正式发布于CTAN和Github上。
+	\item[ver. 1.14 (2018.12.2)]
+		新增 $\textbackslash ifinternal$ 开关,以快速控制条码、照片号、标题等。
+	\item[ver. 1.13 (2018.9.15)]
+		改进采集标签中下划线表的实现。
+		修正地图中的国界错误。
+		\sout{采集标签中增加某植物园建筑地图。}
+		缩减采集标签中的悬挂缩进量。
+		代码模块化。
+	\item[ver. 1.12 (2018.5.15)]
+		优化拉丁学名断行位置。
+		调整标本条码标签的段落样式。
+	\item[ver. 1.11 (2018.3.28)]
+		调整原始数据结构。
+		鉴定标签中增加命名人标准缩写。
+	\item[ver. 1.10 (2018.2.9)]
+		采集标签中增加东莞市镇街地图。
+	\item[ver. 1.09 (2018.1.28)]
+		\sout{实现标本条码标签排版。}
+	\item[ver. 1.08 (2017.10.31)]
+		采集标签中增加经度 \ensuremath{73\mbox{--}136\,^\circ\mathrm E}、纬度 \ensuremath{17\mbox{--}54\,^\circ\mathrm N}范围的地图。
+	\item[ver. 1.07 (2017.10.22)]
+		采集标签与鉴定标签中增加条码。
+		实现带有尼泊尔分区地图的西式采集标签排版,用于2017年中国—尼泊尔联合植物考察。
+	\item[ver. 1.06 (2017.10.21)]
+		采集标签中增加标题。
+	\item[ver. 1.05 (2017.7.4)]
+		页面布局由A4纸纵向双栏改为横向四栏,字号相应缩小,用途更广。
+		改进水平切割线的样式。
+	\item[ver. 1.03 (2017.7.2)]
+		参数改用制表符分隔,方便操作。
+		% 此版本曾发布于Github上。
+	\item[ver. 1.02 (2016.8.6)]
+		\sout{新造某生僻字。}
+	\item[ver. 1.01 (2016.8.3)]
+		实现采集标签与鉴定标签排版功能。
+\end{description}
+\end{multicols}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-doc-zh.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf	2020-07-08 21:17:01 UTC (rev 55784)

Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -0,0 +1,9 @@
+\documentclass[autoduplicate]{nanicolle}
+\begin{document}
+\collect	1997	Yuchang Yang (杨宇昌)	5731	2018.5.8	Caprifoliaceae	苦糖果	Lonicera fragrantissima subsp. standishii	7609	1	between Dongjiamen Village (董家门村) and Dongnao (洞垴), Guantao Town (管陶乡), Wu'an City (武安市), Hebei Province (河北省), China	113.759512	36.951612	1356.0	meadow thickets on slopes	shrub	3		Ripe fruit orange-red, tasting sweet with minimal bitter.
+\collect	1545	Sino-Nepal Joint Plant Expedition (Haining Qin, Prabin Bhandari, Tirtha Raj Pandey, Bijay Raj Subedee, Yuchang Yang, Shuren Zhang)	601	2017.9.18	Fagaceae		Quercus glauca	-	2	Talkot, Bajhang District, Nepal			1700	forests	tree	10	15	Fruiting. Associated with \textit{Rhododendron arboreum} and \textit{Lyonia ovalifolia}.			
+\identify	392	Allium atrosanguineum var. tibeticum (Regel) G. H. Zhu & Turland	藏葱 (Z\`ang C\=ong)	Yuchang Yang		2018.10.7	
+\identify	176	Acer davidii subsp. grosseri (Pax) P. C. de Jong		Yuchang Yang		2018.4.19	
+\identify	230	Erysimum ×cheiri (L.) Crantz		Yuchang Yang		2018.5.17	
+\identify	590	Koenigia alpina (All.) T. M. Schust. & Reveal		Yuchang Yang		2019.4.13	
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-en.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf	2020-07-08 21:17:01 UTC (rev 55784)

Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -0,0 +1,10 @@
+\documentclass[autoduplicate]{nanicolle}
+\begin{document}
+\Collect	724	杨宇昌	5358	2017.5.29	报春花科	粉报春	Primula farinosa	5992	1	内蒙古自治区赤峰市阿鲁科尔沁旗新民乡西拉沐伦大峡谷园区	117.574461	43.136042	918.6	沼泽化草甸	直立草本	0.2		花粉红色,花梗与花萼常被白粉;与天山报春 \textit{Primula nutans} 混生。
+\Identify	78	Allium chrysanthum Regel	野葱	杨宇昌		2017.12.7	
+\Collect	1997	杨宇昌	5731	2018.5.8	忍冬科	苦糖果	Lonicera fragrantissima subsp. standishii	7609	2	河北省武安市管陶乡董家门村西至洞垴途中			1356.0	山坡灌草丛	灌木	3		果实橙红色,味甜微苦。
+\Identify	439	Maianthemum bifolium (L.) F. W. Schmidt	舞鹤草	杨宇昌		2018.12.9	
+\Identify		Idesia polycarpa var. vestita Diels	毛叶山桐子	杨宇昌		2016.5.20	
+\Identify	128	Kandelia obovata Sheue, H. Y. Liu & J. W. H. Yong	秋茄树	杨宇昌		2018.3.5	
+\Identify	585	Ulmus lamellosa C. Wang & S. L. Chang	脱皮榆	杨宇昌		2019.4.11	
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-ex-zh.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.tex	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle-example.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -1,9 +0,0 @@
-\documentclass[autoduplicate]{nanicolle}
-\begin{document}
-\Collect	2912	杨宇昌	6159	2018.9.24	莎草科	褐穗莎草	Cyperus fuscus	7038	1	北京市怀柔区琉璃庙镇双文铺村白河湾湿地生态公园	116.678772	40.655164	214	河边荒草地	披散草本	0.2		须根甚浅,不过2--3 cm;花的鳞片两侧紫褐色,中间绿色。
-\Collect	1997	杨宇昌	5731	2018.5.8	忍冬科	苦糖果	Lonicera fragrantissima subsp. standishii	7609	2	河北省邯郸市武安市管陶乡董家门村西至洞垴途中			1356.0	山坡灌草丛	灌木	3		果实橙红色,味甜微苦。
-\Identify	392	Allium atrosanguineum var. tibeticum (Regel) G. H. Zhu & Turland	藏葱	杨宇昌		2018.10.7	
-\Identify	176	Acer davidii subsp. grosseri (Pax) P. C. de Jong	葛萝槭	杨宇昌		2018.4.19	
-\Identify	230	Erysimum ×cheiri (L.) Crantz	桂竹香	杨宇昌		2018.5.17	
-\Identify	590	Koenigia alpina (All.) T. M. Schust. & Reveal	高山神血宁	杨宇昌		2019.4.13	
-\end{document}

Deleted: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.tex	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/doc/xelatex/nanicolle/nanicolle.tex	2020-07-08 21:17:01 UTC (rev 55784)
@@ -1,322 +0,0 @@
-%% nanicolle.tex
-%% Copyright 2016--2019 Yuchang Yang < yang.yc.allium at gmail.com >
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-%   http://www.latex-project.org/lppl.txt
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-% 
-% The Current Maintainer of this work is Yuchang Yang.
-%
-% This work consists of:
-%   - the class file: [nanicolle.cls];
-%   - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
-%   - the manual files: [nanicolle.tex, nanicolle.pdf, README.md];
-%   - the example files: [nanicolle-example.tex, nanicolle-example.pdf].
-
-% arara: xelatex
-% arara: xelatex
-
-\documentclass[a4paper]{ctexart}
-	\CTEXsetup[format={\Large\bfseries}]{section}
-
-\usepackage[margin=35mm]{geometry}
-\usepackage{marvosym}
-\usepackage{metalogo}
-\usepackage{rulerbox}
-% \usepackage{url}
-\usepackage{color}
-	\definecolor{mikudark}{RGB}{19, 149, 139}
-\usepackage{array}
-	\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
-	\newcolumntype{^}{>{\currentrowstyle}}
-	\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
-\usepackage{enumitem}
-	\setlist[description]{font=\color{mikudark}\bfseries}
-\usepackage{multicol}
-	\setlength\columnsep{2.5em}
-	\setlength\columnseprule{0.4pt}
-\usepackage{adjustbox}
-
-\makeatletter
-\let\url\texttt
-\let\emph\textbf
-\let\pkgname\textsf
-\let\uppercase\relax
-\def\@fnsymbol#1{\ifcase#1\or*\or\Letter\fi}
-\def\qtimes{\ensuremath{\times}}
-\def\tab{\penalty-\@ne\ensuremath{\rightarrow}}
-\def\uspace{\textvisiblespace\allowbreak}
-\def\@lan{\raisebox{.2ex}{\ensuremath{\langle}}}
-\def\@ran{\raisebox{.2ex}{\ensuremath{\rangle}}}
-\def\param#1{\textrm{\@lan\textit{#1}\@ran}}
-\def\stopurl{\rlap{\char00}} % WHY URL IS TO GRAB EVERYTHING IT SEES?
-\long\def\cmd#1{{\ttfamily\color{mikudark}#1}}
-\long\def\pbox#1{\leavevmode\parbox{.86\linewidth}{\cmd{#1}}\kern-.03\linewidth}
-\long\edef\[#1\]{$$\noexpand\pbox{\noexpand\raggedright#1\par}$$}
-\catcode`\$=\active 
-\def\check at nextchar{%
-	\if\@nextchar、\unskip\fi
-	\if\@nextchar,\unskip\fi
-	\if\@nextchar:\unskip\fi
-	\if\@nextchar;\unskip\fi
-	\if\@nextchar。\unskip\fi}
-\def$#1${\CJKecglue\cmd{#1}\CJKecglue
-	\futurelet\@nextchar\check at nextchar}
-\newcount\itemcnt
-	\def\clearcnt{\itemcnt\z@}
-	\def\@black#1{{\color{black}\rmfamily#1}}
-	\def\@theitem{\advance\itemcnt\@ne\@black{\romannumeral\the\itemcnt.\space}}
-	\def\@blackperiod{\@black{。}\@gobble}
-	\def\@blackcolon{\@black{;}\penalty-\@ne}
-	\def\ritem#1{\@theitem#1\@ifnextchar*\@blackperiod\@blackcolon}
-\makeatother
-
-\title{植物标本标签文档类\pkgname{nanicolle}%
-	\footnote{本项目的Github仓库地址为\url{https://github.com/Mikumikunisiteageru/nanicolle}\stopurl 。}}
-\author{杨宇昌%	
-	\footnote{电子邮箱为\url{yang.yc.allium at gmail.com}\stopurl 。}%
-	\quad〔\textsc{Negimoriya}〕}
-\date{2019年9月27日\qquad ver.~2.01}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\begin{document}
-
-\maketitle
-
-\parskip=1ex\relax
-
-植物标本是经处理能够长期保存的植物材料。它们是植物居群的样本,通过标本可以了解植物居群。由于植物材料本身并不能完整地反映居群的重要信息,标本采集者需要作出补充并记录成\emph{采集标签},与标本一同保存。植物分类学者经研究可以判定标本对应居群所属的物种,其意见则以\emph{鉴定标签}的形式,附在标本上。
-
-本文介绍的\LaTeX{}文档类\pkgname{nanicolle}可用于植物标本中文采集标签和鉴定标签的排版。两种标签分别用$\string\Collect$命令和$\string\Identify$名称产生。排好的标签可直接打印。
-
-\pkgname{nanicolle}依赖\pkgname{ctex}宏集和\pkgname{graphicx}、\pkgname{geometry}、\pkgname{multicol}、\pkgname{calc}、\pkgname{listofitems}、\pkgname{color}、\pkgname{xstring}等宏包。目前,\pkgname{nanicolle}文档类仅支持\XeLaTeX{}编译方式。
-
-\pkgname{nanicolle}按 The \LaTeX{} Project Public License (LPPL) 1.3c 协议\footnote{LPPL 1.3c 协议的详细内容见\url{http://www.latex-project.org/lppl.txt}\stopurl 。}授权。
-
-\parskip=0ex\relax
-
-\vfill\tableofcontents\vfill
-
-\clearpage
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{\pkgname{nanicolle}类文档的结构}\label{usage}
-
-一份使用\pkgname{nanicolle}类的文档应是包含以下5部分、以后缀 \texttt{.tex} 结尾的纯文本:
-\begin{enumerate}
-	\item 载入\pkgname{nanicolle}文档类,即$\string\documentclass[\param{选项}]\{nanicolle\}$。
-		其中,$\param{选项}$控制文档类的行为,例如$nomap$可抑制采集标签中的地图,$autoduplicate$则能按标本份数重复采集标签;选项超过一个时,其间要用$,$分隔。不需要加载选项时,可写$\string\documentclass\{nanicolle\}$。
-	\item 在导言区使用$\string\heading$和$\string\subheading$命令定义个性化内容。要在采集标签上方添加统一的标题,可写$\string\heading\{\param{标题}\}$;副标题如需要则可由$\string\subheading\{\param{副标题}\}$命令产生。若跳过此部分,则采集标签上方无标题。
-	\item 正文开始,即$\string\begin\{document\}$。
-	\item 在正文中使用$\string\Collect$和$\string\Identify$两种命令分别产生采集标签和鉴定标签,每个命令占一行。两种命令的格式参见第 \ref{collect} 和第 \ref{identify} 节。
-	\item 正文结束,即$\string\end\{document\}$。
-\end{enumerate}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{用\hbox{}$\textbackslash Collect$命令生成采集标签}\label{collect}
-
-$\string\Collect$命令的格式为
-\[%
-	\hangindent=2em\relax
-	\string\Collect
-		\tab\param{记录号}\tab\param{采集人}\tab\param{采集号}%
-		\tab\param{采集日期}\tab\param{科名}\tab\param{中文名}%
-		\tab\param{学名}\tab\param{照片号}\tab\param{标本份数}%
-		\tab\param{产地}\tab\param{经度}\tab\param{纬度}%
-		\tab\param{海拔}\tab\param{生境}\tab\param{生活型}%
-		\tab\param{体高}\tab\param{胸径}\tab\param{附注}%
-\]
-当中$\tab$表示水平制表符(U+0009,可按键盘Tab键输入)。每行最多能有一个$\string\Collect$命令;每个$\string\Collect$命令须出现在一行开始处,其所有参数必须出现在同一行中。
-某些参数可以为空,但$\tab$都须保留。
-以下就诸参数分别说明。
-
-\begin{enumerate}
-	\item $\param{记录号}$:仅为数据组织方便而设,不在采集标签上出现。
-	\item $\param{采集人}$:标本的采集者的姓名。如有多个采集者,应尽量列举姓名,其间可以用顿号分隔;不建议填写不包含人名的采集团队的名称。此参数不得为空。
-	\item $\param{采集号}$:属于$\param{采集人}$中第一个采集者的记录标本采集的序列号码。建议为简单的整数,从1开始递增。
-	\item $\param{采集日期}$:采集植物材料的日期,可使用$\param{年}.\param{月}.\param{日}$的阿拉伯数字表示。此参数不得为空。
-	\item $\param{科名}$:临时鉴定的科的名称,建议使用中文表示。
-	\item $\param{中文名}$:临时鉴定的植物中文名。
-	\item $\param{学名}$:临时鉴定的植物学名,建议不带作者引证。当非空时,可用通式$\param{属级部分}\param{种级部分}\param{种下等级部分}$表示。
-		其中,$\param{属级部分}$有2类结构:
-		\[\clearcnt
-			\ritem{\param{属名}}%
-			\ritem{\qtimes\param{属名}}*\]
-		$\param{种级部分}$有9类结构:
-		\[\clearcnt
-			\ritem{\uspace sp.}%
-			\ritem{\uspace sp.\uspace nov.}%
-			\ritem{\uspace\param{种加词}}%
-			\ritem{\uspace\qtimes\param{种加词}}%
-			\ritem{\uspace aff.\uspace\param{种加词}}%
-			\ritem{\uspace aff.\uspace\qtimes\param{种加词}}%
-			\ritem{\uspace cf.\uspace\param{种加词}}%
-			\ritem{\uspace cf.\uspace\qtimes\param{种加词}}%
-			\ritem{\uspace '\param{栽培种名}'}*\]
-		当中的$\uspace$表示一个空格(U+0020)。$\param{种下等级部分}$仅当$\param{种级部分}$为结构iii或结构iv时可以非空,此时它有4类结构:
-		\[\clearcnt
-			\ritem{\uspace subsp.\uspace\param{亚种加词}}%
-			\ritem{\uspace var.\uspace\param{变种加词}}%
-			\ritem{\uspace f.\uspace\param{变型加词}}%
-			\ritem{\uspace '\param{栽培品种名}'}*\]
-	\item $\param{照片号}$:仅为数据组织方便而设,不在采集标签上出现。
-	\item $\param{标本份数}$:标本的同号复份数目,用正整数表示。不在采集标签上出现。当文档类的$\param{选项}$包含$autoduplicate$时,每个$\string\Collect$命令将输出$\param{标本份数}$张重复的采集标签。
-	\item $\param{产地}$:植物材料的采集地的自然语言表述,要包含完整的省级、县级、乡级行政单元序列和小地点,小地点可参照地标表示,以便考证与回访。此参数不得为空。
-	\item $\param{经度}$:植物材料采集地的经度坐标,用十进制的浮点数表示,以角度为单位,不带单位符号,正数为东经,负数为西经。不接受度分秒表示。
-	\item $\param{纬度}$:植物材料采集地的纬度坐标,用十进制的浮点数表示,以角度为单位,不带单位符号,正数为北纬,负数为南纬。不接受度分秒表示。
-	\item $\param{海拔}$:植物材料采集地的海拔高度,用浮点数表示,以米为单位,不带单位符号,可以为负数。
-	\item $\param{生境}$:植物居群的野外生活环境,如$山地$、$林缘$、$溪边$等,但对于栽培的植物,应填写$栽培$而非具体的生活环境。
-	\item $\param{生活型}$:植物居群的生活型,如$乔木$、$灌木$、$藤本$等。
-	\item $\param{体高}$:植物居群中个体的典型高度,用浮点数表示,以米为单位,不带单位符号。
-	\item $\param{胸径}$:植物居群中个体的典型胸径,用浮点数表示,以厘米为单位,不带单位符号。
-	\item $\param{附注}$:包含其他在植物标本上无法观察的有价值的信息,如各部的颜色、气味,树皮的纹理,传粉者,植物在当地的俗名、用途、常见程度等。
-\end{enumerate}
-
-\pkgname{nanicolle}文档类默认在经纬度均非空且经度在东经73--136度间、纬度在北纬17--54度间时在采集标签下方输出地图,以标明该坐标的位置。要抑制这个功能,可以在载入文档类时使用$nomap$选项,见第 \ref{usage} 节。
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{用\hbox{}$\textbackslash Identify$命令生成鉴定标签}\label{identify}
-
-$\string\Identify$命令的格式为
-\[%
-	\hangindent=2em\relax
-	\string\Identify
-		\tab\param{记录号}\tab\param{学名}\tab\param{中文名}%
-		\tab\param{鉴定人}\tab\param{鉴定人标准形式}%
-		\tab\param{鉴定日期}\tab\param{批注}%
-\]
-和$\string\Collect$一样,每个$\string\Identify$命令及其所有参数需独占一行。以下就诸参数分别说明。
-
-\begin{enumerate}
-	\item $\param{记录号}$:仅为数据组织方便而设,不在采集标签上出现。
-	\item $\param{学名}$:正式鉴定的植物学名,须带有作者引证,可用通式$\param{属级部分}\param{种级部分}\param{种下等级部分}\param{作者引证}$表示。此参数不得为空。
-	\item $\param{中文名}$:与$\param{学名}$相关联的中文种名。
-	\item $\param{鉴定人}$:标本鉴定者的姓名。
-	\item $\param{鉴定人标准形式}$:标本鉴定者的姓名在分类学上约定的标准形式。此参数与$\param{鉴定人}$不得同时为空。
-	\item $\param{鉴定日期}$:鉴定标本的日期,格式同$\param{采集日期}$。此参数不得为空。
-	\item $\param{批注}$:需另外表明的分类学意见。
-\end{enumerate}
-
-不同于$\string\Collect$命令,$\string\Identify$命令不带$\param{标本份数}$参数,故每个$\string\Identify$命令固定地输出一张鉴定标签。要输出重复的鉴定标签,只能手动复制命令所在的行。
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{其他问题}
-
-\subsection{用工作表软件储存原始数据}
-
-$\string\Collect$与$\string\Identify$之所以不遵照\LaTeX{}惯例而用制表符$\tab$作为参数的定界符,其本意是使得原始数据可以储存工作表(Spreadsheet)软件\footnote{常见的工作表软件如 Microsoft Office Excel。}中。当纯文本粘贴到工作表中时,换行符分隔各行,制表符分隔行内各列。当工作表的内容粘贴为纯文本时,各行由换行符分隔,行内各列由制表符分隔(形成TSV格式)。事实上,这种机制允许储存于工作表中的原始数据可以直接为\XeLaTeX{}引擎所读取。具体来说,可以建立一个形如表 \ref{table} 的工作表来储存原始数据。
-\begin{table}[htbp]
-	\centering
-	\begin{tabular}{|+c|*{8}{^c|}}
-		\hline
-		\rowstyle{\bfseries} 命令 & 记录号 & 采集人 & 采集号 & 采集日期 & 科名 & 中文名 & 学名 & \ensuremath{\cdots} \\\hline
-		\string\Collect & 1 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
-		\string\Collect & 2 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
-		\string\Collect & 3 & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} & \ensuremath{\cdots} \\\hline
-	\end{tabular}
-	\caption{储存采集标签原始数据的工作表示例}\label{table}
-\end{table}
-这样,工作表中的若干行被选中并复制到纯文本环境下后便直接转换成了$\string\Collect$或$\string\Identify$命令要求的格式。而工作表中的原始数据库在这些命令所要求的参数外还能储存更丰富的信息,这些额外信息会被$\string\Collect$或$\string\Identify$命令忽略,不影响标签的内容。
-
-\subsection{PDF文件的打印设置}
-
-编译得到的PDF文件最终要用打印机打印并裁剪,成为可实际使用的标签。打印机的可打印范围一般比纸面小,为保留文件完整性,打印程序通常默认将文件缩小并布局在纸面中心。这样,按印出来的线条裁切,便会出现两侧的标签宽、中间的标签窄的现象。为避免这种问题,打印PDF文件时应选中“使用原始页面大小”选项。
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{完整实例}
-
-% \widowpenalty=10000\relax
-
-以下是一份符合\pkgname{nanicolle}规范的文档实例,保存为 \texttt{nanicolle-example.tex}。
-\[%
-	\clearcnt
-	\everypar={\hangindent=2em\relax\advance\itemcnt1\relax%
-		\leavevmode\llap{\number\itemcnt\quad}}
-	\xeCJKsetup{CJKecglue={}}
-	\string\documentclass[autoduplicate]\string{nanicolle\string}\par
-	\string\begin\string{document\string}\par
-	\string\Collect\tab 2912\tab 杨宇昌\tab 6159\tab 2018.9.24\tab 莎草科\tab 褐穗莎草\tab Cyperus\uspace fuscus\tab 7038\tab 1\tab 北京市怀柔区琉璃庙镇双文铺村白河湾湿地生态公园\tab 116.678772\tab 40.655164\tab 214\tab 河边荒草地\tab 披散草本\tab 0.2\tab \tab 须根甚浅,不过2--3\uspace cm;花的鳞片两侧紫褐色,中间绿色。\par
-	\string\Collect\tab 1997\tab 杨宇昌\tab 5731\tab 2018.5.8\tab 忍冬科\tab 苦糖果\tab Lonicera\uspace fragrantissima\uspace subsp.\uspace standishii\tab 7609\tab 2\tab 河北省邯郸市武安市管陶乡董家门村西至洞垴途中\tab \tab \tab 1356.0\tab 山坡灌草丛\tab 灌木\tab 3\tab \tab 果实橙红色,味甜微苦。\par
-	\string\Identify\tab 392\tab Allium\uspace atrosanguineum\uspace var.\uspace tibeticum\uspace (Regel)\uspace G.\uspace H.\uspace Zhu\uspace \string&\uspace Turland\tab 藏葱\tab 杨宇昌\tab \tab 2018.10.7\tab \par
-	\string\Identify\tab 176\tab Acer\uspace davidii\uspace subsp.\uspace grosseri\uspace (Pax)\uspace P.\uspace C.\uspace de\uspace Jong\tab 葛萝槭\tab 杨宇昌\tab \tab 2018.4.19\tab \par
-	\string\Identify\tab 230\tab Erysimum\uspace \qtimes cheiri\uspace (L.)\uspace Crantz\tab 桂竹香\tab 杨宇昌\tab \tab 2018.5.17\tab \par
-	\string\Identify\tab 590\tab Koenigia\uspace alpina\uspace (All.)\uspace T.\uspace M.\uspace Schust.\uspace \string&\uspace Reveal\tab 高山神血宁\tab 杨宇昌\tab \tab 2019.4.13\tab \par
-	\string\end\string{document\string}\par
-\]
-注意,每个$\string\Collect$或$\string\Identify$命令及其所有参数实际上均位于同一行中,换行只是便于展示。将此文档放置在 \texttt{nanicolle.cls} 所在的目录下,命令行中运行 \texttt{xelatex nanicolle-example},即可在同一目录中得到 \texttt{nanicolle-example.pdf},其效果见图 \ref{example}。
-% \clearpage
-
-\begin{figure}[htbp]
-	\centering
-	\fboxsep=-.2pt\relax
-	\hbox{}\hidewidth\rulerbox{\vbox{\kern-.2pt\hbox{\kern-.2pt\fbox{\includegraphics*[bb=0cm 0cm 14.85cm 21cm]{nanicolle-example.pdf}}\kern-.2pt}\kern-.2pt}}\hidewidth\hbox{}\par
-	\caption{样例PDF文件 \texttt{nanicolle-example.pdf} 的前2栏(左半页)}\label{example}
-\end{figure}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{更新日志}
-\begin{multicols}{2}
-\begin{description}[style=nextline]
-	\item[ver. 2.01 (2019.9.27)] 
-		改进采集标签中下划线表的实现。\\
-		支持在附注等项目中直接用\LaTeX{}命令如 $\string\textit$ 等控制字体样式。\\
-		合并解析拉丁学名的两处代码,允许在采集标签的学名后引证作者。
-	\item[ver. 2.00 (2019.4.28)] 
-		全部代码重构,打包为文档类,重新命名为\pkgname{nanicolle}。\\
-		新增地图自定义与自动选择功能。\\
-		暂时删去英文采集标签排版功能。\\
-		暂时删去标本条码标签排版功能。\\
-		暂时删去植物所建筑地图。\\
-		开始发布于CTAN和Github上。
-	\item[ver. 1.14 (2018.12.2)]
-		新增 $\textbackslash ifinternal$ 开关,以快速控制条码、照片号、标题等。
-	\item[ver. 1.13 (2018.9.15)]
-		改进采集标签中下划线表的实现。\\
-		修正地图中的国界。\\
-		采集标签中增加植物所建筑地图。\\
-		缩减采集标签中的悬挂缩进量。\\
-		代码模块化。
-	\item[ver. 1.12 (2018.5.15)]
-		优化拉丁学名断行位置。\\
-		调整标本条码标签的段落样式。
-	\item[ver. 1.11 (2018.3.28)]
-		调整原始数据结构。\\
-		鉴定标签中增加命名人标准缩写。
-	\item[ver. 1.10 (2018.2.9)]
-		采集标签中增加东莞市镇街地图。
-	\item[ver. 1.09 (2018.1.28)]
-		实现标本条码标签排版。
-	\item[ver. 1.08 (2017.10.31)]
-		采集标签中增加地理范围为经度 \ensuremath{73\mbox{--}136\,^\circ\mathrm E}、纬度 \ensuremath{17\mbox{--}54\,^\circ\mathrm N}的国界与中国省界地图。
-	\item[ver. 1.07 (2017.10.22)]
-		采集标签与鉴定标签中增加条码。\\
-		实现带有尼泊尔分区地图的英文采集标签排版,用于2017年中国—尼泊尔联合植物考察。
-	\item[ver. 1.06 (2017.10.21)]
-		采集标签中增加标题。
-	\item[ver. 1.05 (2017.7.4)]
-		调整页面布局,使标签尺寸缩小为原来的\ensuremath{\sqrt{2}/2},与A4台纸相配。\\
-		改进水平切割线的样式。
-	\item[ver. 1.03 (2017.7.2)]
-		参数的表示由\LaTeX{}格式改成TSV格式,方便用电子表格储存。\\
-		此版本曾发布于Github上。
-	\item[ver. 1.02 (2016.8.6)]
-		新造“\raisebox{-0.3pt}{\resizebox{10pt}{8.5pt}{\raisebox{8pt}{\clipbox{0 6.2pt 0 0pt}{苗}}\kern-10pt\relax 杭}}”字。
-	\item[ver. 1.01 (2016.8.3)]
-		实现采集标签与鉴定标签排版。
-\end{description}
-\end{multicols}
-
-\end{document}

Modified: trunk/Master/texmf-dist/tex/xelatex/nanicolle/nanicolle.cls
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/nanicolle/nanicolle.cls	2020-07-08 17:00:07 UTC (rev 55783)
+++ trunk/Master/texmf-dist/tex/xelatex/nanicolle/nanicolle.cls	2020-07-08 21:17:01 UTC (rev 55784)
@@ -1,5 +1,5 @@
 %% nanicolle.cls
-%% Copyright 2016--2019 Yuchang Yang < yang.yc.allium at gmail.com >
+%% Copyright 2016--2020 Yuchang Yang < yang.yc.allium at gmail.com >
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,11 +16,13 @@
 % This work consists of:
 %   - the class file: [nanicolle.cls];
 %   - the illustration files: [point.pdf, ChinaMainland.pdf, Dongguan.pdf];
-%   - the manual files: [nanicolle.tex, nanicolle.pdf, README.md];
-%   - the example files: [nanicolle-example.tex, nanicolle-example.pdf].
+%   - the manual files: [nanicolle-doc-zh.tex, nanicolle-doc-zh.pdf, 
+%                        nanicolle-doc-en.tex, nanicolle-doc-en.pdf, README.md];
+%   - the example files: [nanicolle-ex-zh.tex, nanicolle-ex-zh.pdf,
+%                         nanicolle-ex-en.tex, nanicolle-ex-en.pdf].
 %%
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{nanicolle}[2019/09/27 v2.01 class nanicolle]
+\ProvidesClass{nanicolle}[2020/07/08 v2.02 class nanicolle]
 % CATCODE PART I
 \makeatletter
 % CLASS OPTIONS
@@ -62,7 +64,7 @@
 \newif\if at drew@map@
 \newif\if at barcodeprepared@
 \newif\if at identifying@
-    \@identifying at false
+  \@identifying at false
 % KERNING AND SPACING
 \def\!{\kern-.0889em\relax}
 \def\:{\kern+.0667em\relax}
@@ -99,7 +101,6 @@
 \newbox\pin at point
   \setbox\pin at point=\vb at xt@\z@{\vss\hb at xt@\z@{%
     \hss\includegraphics{point.pdf}\hss}\vss}
-% 20190926
 \newdimen\whiterule
 \newdimen\whitevsep
 \newdimen\whitehsep
@@ -127,23 +128,23 @@
     \kern-1em}\vskip-\ht\@tempboxa\box\@tempboxa\par}
 % UNIT EXPRESSIONS
 \def\degree{\ensuremath{^\circ}}
-\def\gobble at char#1{\relax}
-\def\plus at one@degree#1#2#3{%
+\def\add at degree#1#2#3{%
+  \edef\@arg{#1}%
   \if\relax#1\relax\else
     \ifdim#1\@unit>\z@
-      #1\:\ensuremath{^\circ}\!#2%
+      #1\:\degree\!#2%
     \else
-      \expandafter\gobble at char#1\:\degree\!#3%
+      \expandafter\@gobble\@arg\:\degree\!#3%
     \fi
   \fi}
-\def\plus at one@long#1{\plus at one@degree{#1}EW}
-\def\plus at one@lat#1{\plus at one@degree{#1}NS}
-\def\plus at one@second#1#2{%
+\def\add at long#1{\add at degree{#1}EW}
+\def\add at lat#1{\add at degree{#1}NS}
+\def\add at unit#1#2{%
   \if\relax#1\relax\else
     #1\,#2%
   \fi}
-\def\plus at one@cm#1{\plus at one@second{#1}{cm}}
-\def\plus at one@m#1{\plus at one@second{#1}{m}}
+\def\add at cm#1{\add at unit{#1}{cm}}
+\def\add at m#1{\add at unit{#1}{m}}
 % PARSING
 % LATIN PARSING
 \def\inter at taxon@skip{ \hskip .1667em minus .1667em\relax}
@@ -168,10 +169,10 @@
   \strsubs{ }{ \upd at shape}%
   \strsubs{subsp.}{\textup{subsp.}\word at cnt\tw@}
   \strsubs{var.}{\textup{var.}\word at cnt\tw@}
+  \strsubs{cf.}{\textup{cf.}\word at cnt\tw@}
+  \strsubs{aff.}{\textup{aff.}\word at cnt\tw@}
   \strsubs{f.}{\handle at f}
   \strsubs{sp.}{\upshape sp.\word at cnt\z@}
-  \strsubs{cf.}{\textup{cf.}\word at cnt\tw@}
-  \strsubs{aff.}{\textup{aff.}\word at cnt\tw@}
   \strsubs{et}{\penalty-\@ne et\penalty-\@ne}
   \strsubs{ex}{\penalty-\tw@ et\penalty-\tw@}
   \strsubs{(}{\penalty-\thr@@(}\strsubs{)}{)\penalty-\thr@@}
@@ -217,8 +218,7 @@
   \fi\fi
   \if\relax\Collector\relax\@param at enough@false\fi
   \if\relax\ColDate\relax\@param at enough@false\fi
-  \if\relax\Location\relax\@param at enough@false\fi
-  }
+  \if\relax\Location\relax\@param at enough@false\fi}
 \def\det at parse@params#1{%
   \readlist\temp at argin{#1}
   \@param at enough@true
@@ -232,13 +232,13 @@
   \def\temp at name{\Identifier\IdentifierStd}
   \if\relax\LatName\relax\@param at enough@false\fi
   \if\relax\temp at name\relax\@param at enough@false\fi
-  \if\relax\DateIdentification\relax\@param at enough@false\fi
-  }
+  \if\relax\DateIdentification\relax\@param at enough@false\fi}
 % FONT STYLE
 \def\headerstyle{\bfseries}
 \def\headingstyle{\scshape}
 \def\detlatinstyle{\sffamily\bfseries}
 \def\detchinesestyle{\bfseries}
+\def\detcommonnamestyle{\mdseries}
 \def\identifierstyle{\itshape}
 % INDIVIDUALIZATION
 \def\@herbariumcode{}
@@ -255,8 +255,7 @@
   \expandafter\def\csname#1 at longmin\endcsname{#3}%
   \expandafter\def\csname#1 at longmax\endcsname{#4}%
   \expandafter\def\csname#1 at latmin\endcsname{#5}%
-  \expandafter\def\csname#1 at latmax\endcsname{#6}%
-}
+  \expandafter\def\csname#1 at latmax\endcsname{#6}}
 % MAP DEFINITIONS
 \mapdef{ChinaMainland}{ChinaMainland.pdf}{73}{136}{17}{54}
 % \mapdef{Dongguan}{Dongguan.pdf}{113.5}{114.26667}{22.63333}{23.16667}
@@ -273,29 +272,26 @@
   \centerline{\hss\rule{.25\paperwidth}{\NC at seprule}\hss}}
 % COMPONENTS OF COLLECTION LABELS
 \RequirePackage{color}
+\long\def\length at test#1#2#3#4{%
+  \sbox\temp at box{#1}%
+  \ifdim\wd\temp at box>#2\linewidth\relax#3\else#4\fi}
+\def\form at wrap#1#2{%
+  \sbox\header at box{\headerstyle\white at uline{#1}}%
+  \length at test{\copy\header at box\quad#2}{}%
+    {\par\hangindent=1em\relax
+    \leavevmode\box\header at box\quad\CJKglue#2\par}}
 \def\form at line#1#2{%
-  \par\hangindent=1em%
-  \leavevmode
-  \setbox\header at box=\hbox{\headerstyle\white at uline{#1}}%
-  \setbox\temp at box=\hbox{\copy\header at box\quad#2}%
-  \def\glue at begin{\quad\hfill}%
-  \def\glue at end{\hfill\hfill\hbox{}}%
-  \ifdim\wd\temp at box>\linewidth
-    \def\glue at begin{\CJKglue\quad\CJKglue}%
-    \def\glue at end{}\fi
-  \box\header at box
-    \glue at begin#2\glue at end\par}
+  \form at wrap{#1}{#2}%
+    {\leavevmode\box\header at box
+    \quad\hfill#2\hskip\stretch2\null\par}}
 \def\form at cell#1#2{%
-  \leavevmode
-  \hbox{\headerstyle\white at uline{#1}}\nobreak
-  \;\hfill#2\hfill\;\hbox{}\penalty-1\relax\ignorespaces}
+  \form at wrap{#1}{#2}%  
+    {\leavevmode\box\header at box
+    \;\hfill#2\hfill\;\null\penalty-1\relax\ignorespaces}}
 \def\heading at line#1{%
-  \setbox\temp at box=\hbox{#1}%
-  \ifdim\wd\temp at box>\linewidth
-    \centerline{\resizebox{\linewidth}{\height}{\box\temp at box}}%
-  \else
-    \centerline{\box\temp at box}%
-  \fi}
+  \length at test{#1}{}%
+    {\centerline{\resizebox{\linewidth}{\height}{\box\temp at box}}}%
+    {\centerline{\box\temp at box}}}
 \if at rulerhead
   \RequirePackage{rulerbox}
     \setlength\rulersep{-.2pt}
@@ -309,9 +305,8 @@
       \heading at line{\headingstyle\@subheading}\fi
     \if at rulerhead
       \nointerlineskip\vskip2pt\relax
-      \centerline{\hbox{}\hss
-        \rulerbox[tb]{\kern-.9mm\rule{6.18cm}{.4pt}\kern-.9mm}%
-        \hss\hbox{}}%
+      \centerline{%
+        \rulerbox[tb]{\kern-.9mm\rule{6.18cm}{.4pt}\kern-.9mm}}%
       \vskip5pt\relax
     \else
       \hrule\@height\NC at seprule
@@ -326,13 +321,13 @@
     \form at cell{采集日期}{\ColDate}%
       \if at internal\form at cell{标本份数}{\NumDup}\fi\par
     \form at line{产地}{\Location}%
-    \form at cell{经度}{\plus at one@long\Longitude}%
-      \form at cell{纬度}{\plus at one@lat\Latitude}\par
-    \form at cell{海拔}{\plus at one@m\Altitude}%
+    \form at cell{经度}{\add at long\Longitude}%
+      \form at cell{纬度}{\add at lat\Latitude}\par
+    \form at cell{海拔}{\add at m\Altitude}%
       \form at cell{生境}{\Habitat}\par
     \form at cell{生活型}{\LifeForm}\penalty-2\relax%
-      \form at cell{体高}{\plus at one@m\Height}%
-      \form at cell{胸径}{\plus at one@cm\DBH}\par
+      \form at cell{体高}{\add at m\Height}%
+      \form at cell{胸径}{\add at cm\DBH}\par
     \form at cell{科名}{\Family}%
       \form at cell{中文名}{\ChnName}\par
     \form at line{学名}{\col at latin{\LatName}}
@@ -354,7 +349,23 @@
   \fi
   \cutting at line}
 \RequirePackage{calc}
-\def\makemap#1{%
+\def\make at map#1{%
+  \setlength\map at x{\wd\csname#1 at map\endcsname*%
+    \ratio{\Longitude\@unit-\csname#1 at longmin\endcsname\@unit}%
+      {\csname#1 at longmax\endcsname\@unit-\csname#1 at longmin\endcsname\@unit}}%
+  \setlength\map at y{\ht\csname#1 at map\endcsname*%
+    \ratio{\Latitude\@unit-\csname#1 at latmin\endcsname\@unit}%
+      {\csname#1 at latmax\endcsname\@unit-\csname#1 at latmin\endcsname\@unit}}%
+  \begingroup\ooalign{%
+    \copy\csname#1 at map\endcsname\cr
+    \hb at xt@\map at x{\hss\vb at xt@\map at y{\copy\pin at point\vss}}\cr}%
+  \endgroup}
+\def\print at map#1{%
+  \vskip3.5mm\relax
+  \make at map{#1}%
+  \vskip\NC at margin
+  \cutting at line}
+\def\choose at map#1{%
   \unless\if at drew@map@
     \if\relax\Longitude\relax\else
     \if\relax\Latitude\relax\else
@@ -362,42 +373,87 @@
     \ifdim\Longitude\@unit<\csname#1 at longmax\endcsname\@unit
     \ifdim\Latitude\@unit>\csname#1 at latmin\endcsname\@unit
     \ifdim\Latitude\@unit<\csname#1 at latmax\endcsname\@unit
-      \setlength\map at x{\wd\csname#1 at map\endcsname*%
-        \ratio{\Longitude\@unit-\csname#1 at longmin\endcsname\@unit}%
-          {\csname#1 at longmax\endcsname\@unit-\csname#1 at longmin\endcsname\@unit}}
-      \setlength\map at y{\ht\csname#1 at map\endcsname*%
-        \ratio{\Latitude\@unit-\csname#1 at latmin\endcsname\@unit}%
-          {\csname#1 at latmax\endcsname\@unit-\csname#1 at latmin\endcsname\@unit}}
-      \vskip3.5mm\relax
-      \begingroup\ooalign{%
-        \copy\csname#1 at map\endcsname\cr
-        \hb at xt@\map at x{\hss\vb at xt@\map at y{\copy\pin at point\vss}}\cr}
-      \endgroup
-      \vskip\NC at margin
-      \cutting at line
+      \print at map{#1}%
       \@drew at map@true
     \fi\fi\fi\fi\fi\fi
   \fi}
+\def\printmap{\ifmap\@for\@tmp:=\map at series\do{\choose at map{\@tmp}}\fi}
+\@drew at map@false
 % \def\map at series{Dongguan,ChinaMainland}
 \def\map at series{ChinaMainland}
 \def\mapseries#1{\def\map at series{#1}}
+\def\loop at the@loop#1{%
+  \loop\ifnum\repeat at cnt>\z@#1%
+  \advance\repeat at cnt-\@ne\repeat}
 \def\@Collect#1{%
-  \@drew at map@false
   \col at parse@params{#1}%
   \if at param@enough@
-    \loop\ifnum\repeat at cnt>\z@
-    \nointerlineskip
-    \begin{minipage}[c]{\linewidth}%
-      \vskip\NC at margin
-      \printheadings
-      \printform
-      \printbarcode
-      \ifmap\@for\@tmp:=\map at series\do{\makemap{\@tmp}}\fi
-    \end{minipage}%
-    \filbreak
-    \advance\repeat at cnt-\@ne\repeat
+    \loop at the@loop{%
+      \nointerlineskip
+      \begin{minipage}[c]{\linewidth}%
+        \vskip\NC at margin
+        \printheadings
+        \printform
+        \printbarcode
+        \printmap
+      \end{minipage}%
+      \filbreak}
   \fi}
 \def at to@eol\Collect\@Collect
+% COLLECTING LABELS IN WESTERN LANGUAGES
+\def\translation at asl{a.s.l.}
+\def\translation at dbh{DBH}
+\def\translation at tall{tall}
+\def\aster{\ensuremath{\ast}\hss}
+\def\printheadings at en{%
+  \if\relax\@heading\relax\else
+    \heading at line{\headingstyle\@heading}
+    \if\relax\@subheading\relax\else
+      \heading at line{\headingstyle\@subheading}\fi
+    \vskip2pt\relax
+    \centerline{\makebox[0.618\linewidth][s]{%
+      \aster\aster\aster\aster\aster\unskip}}
+    \vskip4pt\relax
+  \fi}
+\def\init at punct{\def\the at punct{}}\init at punct
+\def\push at punct#1{\def\the at punct{#1 }}
+\def\pop at punct{\the at punct\init at punct}
+\def\unless at empty#1#2#3#4{%
+  \edef\@tmp{#1}%
+  \unless\ifx\@tmp\empty
+    \pop at punct#2#1#3\push at punct{#4}\fi}
+\def\print at col@num#1#2{%
+  \length at test{#1\hskip0.7em\relax#2}{0.85}%
+    {#1\hskip0.7em\relax\allowbreak\null\nobreak\hfill#2}%
+    {\leavevmode\box\temp at box}\par}
+\def\capitalize at one#1{\uppercase{#1}}
+\def\capitalize at first#1{%
+  \edef\@tmp{#1}%
+  \expandafter\capitalize at one\@tmp}
+\def\printform at en{%
+  \raggedright
+  \unless at empty{\Family}{\textsc}{}{}\par
+  {\leftskip2em\relax\hangindent1em\relax
+    \unless at empty{\LatName}{\det at latin}{}{}\par}
+  \parskip=5pt\relax
+  \print at col@num{\Collector}{\#\,\ColNum}%
+  \unless at empty{\ColDate}{\capitalize at first}{}{;}%
+    \unless at empty{\Location}{}{}{,}%
+    \unless at empty{\Longitude}{\add at long}{}{,}%
+    \unless at empty{\Latitude}{\add at lat}{}{,}%
+    \unless at empty{\Altitude}{\add at m}{ \translation at asl}{}\push at punct{;}%
+    \unless at empty{\Habitat}{}{}{}\push at punct{.}\pop at punct\par
+  \unless at empty{\LifeForm}{\capitalize at first}{}{,}%
+    \unless at empty{\Height}{\add at m}{ \translation at tall}{,}%
+    \unless at empty{\DBH}{\translation at dbh\space\add at cm}{}{.}\push at punct{.}\pop at punct%
+    \Descr\par
+  \parskip\z@}
+\def\@Collect at en#1{{%
+  \let\printheadings\printheadings at en
+  \let\printform\printform at en
+  \@Collect{#1}}}
+\def at to@eol\Collect at en\@Collect at en
+\let\collect\Collect at en
 % COMPONENTS OF IDENTIFICATION LABELS
 \if at det@barcode
   \RequirePackage{qrcode}
@@ -438,6 +494,12 @@
   \fi
   \@identifying at false}
 \def at to@eol\Identify\@Identify
+% COLLECTING LABELS IN WESTERN LANGUAGES
+\def\@Identify at en#1{{%
+  \let\detchinesestyle\detcommonnamestyle
+  \@Identify{#1}}}
+\def at to@eol\Identify at en\@Identify at en
+\let\identify\Identify at en
 % CATCODES PART III
 \catcode`\&\active
   \def&{et}



More information about the tex-live-commits mailing list.