diff options
-rw-r--r-- | Makefile | 41 | ||||
-rw-r--r-- | icite.dtx | 192 |
2 files changed, 172 insertions, 61 deletions
@@ -7,26 +7,45 @@ UTREE = $(shell kpsewhich --var-value TEXMFHOME) | |||
7 | all: $(NAME).pdf | 7 | all: $(NAME).pdf |
8 | test -e README.txt && mv README.txt README || exit 0 | 8 | test -e README.txt && mv README.txt README || exit 0 |
9 | $(NAME).pdf: $(NAME).dtx | 9 | $(NAME).pdf: $(NAME).dtx |
10 | pdflatex -shell-escape -recorder -interaction=batchmode $(NAME).dtx >/dev/null | 10 | lualatex --shell-escape --recorder --interaction=batchmode $(NAME).dtx >/dev/null |
11 | if [ -f $(NAME).glo ]; then makeindex -q -s gglo.ist -o $(NAME).gls $(NAME).glo; fi | 11 | if [ -f $(NAME).glo ]; then makeindex -q -s gglo.ist -o $(NAME).gls $(NAME).glo; fi |
12 | if [ -f $(NAME).idx ]; then makeindex -q -s gind.ist -o $(NAME).ind $(NAME).idx; fi | 12 | if [ -f $(NAME).idx ]; then makeindex -q -s gind.ist -o $(NAME).ind $(NAME).idx; fi |
13 | pdflatex --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null | 13 | lualatex --shell-escape --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null |
14 | pdflatex --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null | 14 | lualatex --shell-escape --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null |
15 | clean: | 15 | clean: |
16 | rm -f $(NAME).{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out} | 16 | rm -f $(NAME).{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc,listing} |
17 | distclean: clean | 17 | rm -f *~ |
18 | rm -rf auto/ | ||
19 | distclean: clean uninst | ||
20 | rm -rf _minted-* | ||
18 | rm -f $(NAME).{pdf,sty} README | 21 | rm -f $(NAME).{pdf,sty} README |
19 | inst: all | 22 | rm -f *.zip *.tar.gz |
23 | inst: uninst all | ||
20 | mkdir -p $(UTREE)/{tex,source,doc}/latex/$(NAME) | 24 | mkdir -p $(UTREE)/{tex,source,doc}/latex/$(NAME) |
21 | cp $(NAME).dtx $(UTREE)/source/latex/$(NAME) | 25 | cp $(NAME).dtx $(UTREE)/source/latex/$(NAME) |
22 | cp $(NAME).sty $(UTREE)/tex/latex/$(NAME) | 26 | cp $(NAME).sty $(UTREE)/tex/latex/$(NAME) |
23 | cp $(NAME).pdf $(UTREE)/doc/latex/$(NAME) | 27 | cp $(NAME).pdf $(UTREE)/doc/latex/$(NAME) |
24 | install: all | 28 | uninst: |
25 | sudo mkdir -p $(LOCAL)/{tex,source,doc}/latex/$(NAME) | 29 | rm -rf $(UTREE)/{tex,source,doc}/latex/$(NAME) |
26 | sudo cp $(NAME).dtx $(LOCAL)/source/latex/$(NAME) | 30 | #install: all |
27 | sudo cp $(NAME).sty $(LOCAL)/tex/latex/$(NAME) | 31 | # sudo mkdir -p $(LOCAL)/{tex,source,doc}/latex/$(NAME) |
28 | sudo cp $(NAME).pdf $(LOCAL)/doc/latex/$(NAME) | 32 | # sudo cp $(NAME).dtx $(LOCAL)/source/latex/$(NAME) |
33 | # sudo cp $(NAME).sty $(LOCAL)/tex/latex/$(NAME) | ||
34 | # sudo cp $(NAME).pdf $(LOCAL)/doc/latex/$(NAME) | ||
29 | zip: all | 35 | zip: all |
30 | ln -sf . $(NAME) | 36 | ln -sf . $(NAME) |
31 | zip -Drq $(PWD)/$(NAME)-$(VERS).zip $(NAME)/{README,$(NAME).{pdf,dtx}} | 37 | zip -Drq $(PWD)/$(NAME)-$(VERS).zip $(NAME)/{README,$(NAME).{pdf,dtx}} |
32 | rm $(NAME) | 38 | rm $(NAME) |
39 | package: distclean all | ||
40 | mkdir $(NAME)/ | ||
41 | cp README *.dtx *.pdf $(NAME)/ | ||
42 | mkdir -p tex/latex/$(NAME)/ | ||
43 | cp *.sty tex/latex/$(NAME)/ | ||
44 | mkdir -p doc/latex/$(NAME)/ | ||
45 | cp *.pdf doc/latex/$(NAME)/ | ||
46 | mkdir -p source/latex/$(NAME)/ | ||
47 | cp Makefile *.dtx source/latex/$(NAME)/ | ||
48 | zip -r $(NAME).tds.zip tex doc source | ||
49 | rm -rf tex/ source/ doc/ | ||
50 | tar czf $(NAME)-$(VERS).tar.gz $(NAME).tds.zip $(NAME)/ | ||
51 | rm -rf $(NAME)/ | ||
@@ -9,8 +9,8 @@ | |||
9 | icite:| Make Indices locorum citatorum | 9 | icite:| Make Indices locorum citatorum |
10 | Author:| Robert Alessi | 10 | Author:| Robert Alessi |
11 | E-mail:| alessi@robertalessi.net | 11 | E-mail:| alessi@robertalessi.net |
12 | License:| Released under the LaTeX Project Public License v1.3c or later | 12 | License:| Released under the GNU General Public License v3 or later |
13 | See:| http://www.latex-project.org/lppl.txt | 13 | See:| http://www.gnu.org/licenses/ |
14 | 14 | ||
15 | 15 | ||
16 | Short description: | 16 | Short description: |
@@ -32,23 +32,30 @@ Some text about the package: probably the same as the abstract. | |||
32 | icite:| Make Indices locorum citatorum | 32 | icite:| Make Indices locorum citatorum |
33 | Author:| Robert Alessi | 33 | Author:| Robert Alessi |
34 | E-mail:| alessi@robertalessi.net | 34 | E-mail:| alessi@robertalessi.net |
35 | License:| Released under the LaTeX Project Public License v1.3c or later | 35 | License:| Released under the GNU General Public License v3 or later |
36 | See:| http://www.latex-project.org/lppl.txt | 36 | See:| http://www.gnu.org/licenses/ |
37 | 37 | ||
38 | \endpreamble | 38 | \endpreamble |
39 | \postamble | 39 | \postamble |
40 | 40 | ||
41 | Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net> | 41 | Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net> |
42 | 42 | ||
43 | This work may be distributed and/or modified under the | 43 | Please send error reports and suggestions for improvements to Robert |
44 | conditions of the LaTeX Project Public License (LPPL), either | 44 | Alessi <alessi@robertalessi.net> |
45 | version 1.3c of this license or (at your option) any later | ||
46 | version. The latest version of this license is in the file: | ||
47 | 45 | ||
48 | http://www.latex-project.org/lppl.txt | 46 | This program is free software: you can redistribute it and/or modify |
47 | it under the terms of the GNU General Public License as published by | ||
48 | the Free Software Foundation, either version 3 of the License, or | ||
49 | (at your option) any later version. | ||
49 | 50 | ||
50 | This work is "maintained" (as per LPPL maintenance status) by | 51 | This program is distributed in the hope that it will be useful, but |
51 | Robert Alessi. | 52 | WITHOUT ANY WARRANTY; without even the implied warranty of |
53 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
54 | General Public License for more details. | ||
55 | |||
56 | You should have received a copy of the GNU General Public License | ||
57 | along with this program. If not, see | ||
58 | <http://www.gnu.org/licenses/>. | ||
52 | 59 | ||
53 | This work consists of the file icite.dtx and a Makefile. | 60 | This work consists of the file icite.dtx and a Makefile. |
54 | Running "make" generates the derived files README, icite.pdf and icite.sty. | 61 | Running "make" generates the derived files README, icite.pdf and icite.sty. |
@@ -92,14 +99,68 @@ Running "make install" installs the files in the local TeX tree. | |||
92 | %</package> | 99 | %</package> |
93 | %<*driver> | 100 | %<*driver> |
94 | \documentclass{ltxdoc} | 101 | \documentclass{ltxdoc} |
95 | \usepackage[a4paper,margin=25mm,left=50mm,nohead]{geometry} | 102 | \usepackage[letterpaper,margin=25mm,left=50mm,nohead]{geometry} |
96 | \usepackage[numbered]{hypdoc} | ||
97 | \usepackage{\jobname} | 103 | \usepackage{\jobname} |
104 | \usepackage{metalogox} | ||
105 | \usepackage{hyperxmp} | ||
106 | \usepackage{uri} | ||
107 | \usepackage[numbered]{hypdoc} | ||
108 | \hypersetup{unicode=true, colorlinks, allcolors=blue, | ||
109 | linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The | ||
110 | icite package}, pdfcontactemail={alessi@robertalessi.net}, | ||
111 | pdfcontacturl={http://www.robertalessi.net/ekdosis}, | ||
112 | pdfcopyright={Copyright (C) 2018 Robert Alessi | ||
113 | <alessi@robertalessi.net>. This document is licensed under the | ||
114 | Creative Commons Attribution-ShareAlike 4.0 International | ||
115 | License. To view a copy of this license, visit | ||
116 | http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to | ||
117 | Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.}, | ||
118 | pdflicenseurl={https://creativecommons.org/licenses/by-sa/4.0/legalcode}, | ||
119 | pdfmetalang={en-US}, pdftype={Text}, pdfkeywords={bibtex, biblatex, | ||
120 | indexing}} | ||
121 | \usepackage[lot]{multitoc} | ||
122 | \usepackage{fontspec} | ||
123 | \setmainfont{Old Standard}[RawFeature={+ss05;+ss06}] | ||
124 | \usepackage{newunicodechar} | ||
125 | \newunicodechar{ǧ}{ǧ} % Old Standard does not include ǧ/Ǧ | ||
126 | \newunicodechar{Ǧ}{Ǧ} % | ||
127 | \usepackage{relsize} | ||
128 | \usepackage{units} | ||
129 | \usepackage{minted} | ||
130 | \usepackage[contents]{colordoc} | ||
131 | \newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} | ||
132 | \usepackage{tikz} | ||
133 | \usepackage[breakable, skins, xparse, minted]{tcolorbox} | ||
134 | \tcbset{colback=white, boxrule=.15mm, colframe=red!50!white, left=6mm, | ||
135 | breakable} | ||
136 | \usepackage{etoc} | ||
137 | \etocsettocdepth{paragraph} | ||
138 | \newcommand{\icitetableofcontents}{% | ||
139 | \begingroup | ||
140 | \etocsetstyle{section}{}{} | ||
141 | {\etocsavedsectiontocline{% | ||
142 | \numberline{\etocnumber}\etocname}{\etocpage}}{} | ||
143 | \etocsetstyle{subsection}{}{} | ||
144 | {\etocsavedsubsectiontocline{% | ||
145 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% | ||
146 | \etocsetstyle{subsubsection}{}{} | ||
147 | {\etocsavedsubsubsectiontocline{% | ||
148 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% | ||
149 | \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip | ||
150 | 0pt plus 1fil\relax \nobreak} | ||
151 | {\noindent\etocname{} \etocpage{} }{\par}% | ||
152 | \etocmulticolstyle[2]{\section*{Contents}} | ||
153 | \pdfbookmark[1]{Contents}{toc} | ||
154 | \tableofcontents | ||
155 | \endgroup} | ||
98 | \EnableCrossrefs | 156 | \EnableCrossrefs |
99 | \CodelineIndex | 157 | \CodelineIndex |
100 | \RecordChanges | 158 | \RecordChanges |
159 | %\OnlyDescription | ||
101 | \begin{document} | 160 | \begin{document} |
102 | \DocInput{\jobname.dtx} | 161 | \DocInput{\jobname.dtx} |
162 | \PrintChanges | ||
163 | \PrintIndex | ||
103 | \end{document} | 164 | \end{document} |
104 | %</driver> | 165 | %</driver> |
105 | % \fi | 166 | % \fi |
@@ -107,13 +168,22 @@ Running "make install" installs the files in the local TeX tree. | |||
107 | % \GetFileInfo{\jobname.dtx} | 168 | % \GetFileInfo{\jobname.dtx} |
108 | % \DoNotIndex{\newcommand,\newenvironment} | 169 | % \DoNotIndex{\newcommand,\newenvironment} |
109 | % | 170 | % |
110 | %\title{\textsf{icite} --- Make Indices locorum citatorum\thanks{This file | 171 | % \title{\tcbox[colframe=black, enhanced, tikznode, drop lifted |
111 | % describes version \fileversion, last revised \filedate.} | 172 | % shadow, colback=white, boxrule=.25mm]{% |
112 | %} | 173 | % The \textsf{icite} package\\ |
113 | %\author{Robert Alessi\thanks{E-mail: alessi@robertalessi.net}} | 174 | % \emph{Indices locorum citatorum}\\ |
114 | %\date{Released \filedate} | 175 | % \fileversion\ --- \filedate}} |
176 | % | ||
177 | % \author{Robert Alessi \\ | ||
178 | % \href{mailto:alessi@robertalessi.net?Subject=icite package}% | ||
179 | % {\texttt{alessi@robertalessi.net}}} | ||
180 | % | ||
181 | % \date{} | ||
115 | % | 182 | % |
116 | %\maketitle | 183 | % \maketitle |
184 | % \footnotesize | ||
185 | % \icitetableofcontents | ||
186 | % \normalsize | ||
117 | % | 187 | % |
118 | %\changes{v1.00}{2019/02/22}{First public release} | 188 | %\changes{v1.00}{2019/02/22}{First public release} |
119 | % | 189 | % |
@@ -130,54 +200,76 @@ Running "make install" installs the files in the local TeX tree. | |||
130 | % example. If this were a real macro, you would put a paragraph here | 200 | % example. If this were a real macro, you would put a paragraph here |
131 | % describing what the macro is supposed to do, what its mandatory and | 201 | % describing what the macro is supposed to do, what its mandatory and |
132 | % optional arguments are, and so forth. | 202 | % optional arguments are, and so forth. |
133 | % | ||
134 | % \DescribeEnv{dummyEnv} | 203 | % \DescribeEnv{dummyEnv} |
135 | % This environment does nothing. It is merely an example. | 204 | % This environment does nothing. It is merely an example. |
136 | % If this were a real environment, you would put a paragraph here | 205 | % If this were a real environment, you would put a paragraph here |
137 | % describing what the environment is supposed to do, what its | 206 | % describing what the environment is supposed to do, what its |
138 | % mandatory and optional arguments are, and so forth. | 207 | % mandatory and optional arguments are, and so forth. |
208 | %\iffalse | ||
209 | %<*example> | ||
210 | %\fi | ||
211 | \begin{tcblisting}{minted options=linenos} | ||
212 | \emph{tchic} | ||
213 | \end{tcblisting} | ||
214 | %\iffalse | ||
215 | %</example> | ||
216 | %\fi | ||
217 | %\iffalse | ||
218 | %<*example> | ||
219 | %\fi | ||
220 | \begin{tcblisting}{minted options=linenos, listing only} | ||
221 | \vroum[tchic]{tchic} | ||
222 | \end{tcblisting} | ||
223 | %\iffalse | ||
224 | %</example> | ||
225 | %\fi | ||
139 | % | 226 | % |
140 | %\StopEventually{^^A | 227 | %\StopEventually{} |
141 | % \PrintChanges | ||
142 | % \PrintIndex | ||
143 | %} | ||
144 | % | 228 | % |
145 | % \section{Implementation} | 229 | % \section{Implementation} |
146 | % | 230 | % |
147 | % \begin{macrocode} | 231 | % \iffalse |
148 | %<*package> | 232 | %<*package> |
149 | 233 | % \fi | |
234 | % Declare the global options, and define them: | ||
235 | % \begin{macrocode} | ||
236 | \RequirePackage{xkeyval} | ||
237 | \DeclareOptionX{citecmd}[cite]{\def\ic@dfltcit{#1}} | ||
238 | \ExecuteOptionsX{citecmd} | ||
239 | \ProcessOptionsX\relax | ||
150 | % \end{macrocode} | 240 | % \end{macrocode} |
151 | % \begin{macro}{\dummyMacro} | 241 | % The following packages are required by \package{icite}: |
152 | % This is a dummy macro. If it did anything, we'd describe its | ||
153 | % implementation here. | ||
154 | % \begin{macrocode} | 242 | % \begin{macrocode} |
155 | \newcommand{\dummyMacro}{} | 243 | \RequirePackage{xparse} |
244 | \RequirePackage{usebib} | ||
156 | % \end{macrocode} | 245 | % \end{macrocode} |
157 | % \end{macro} | 246 | % Define fields to be used by \package{icite}: |
158 | % | ||
159 | % \begin{environment}{dummyEnv} | ||
160 | % This is a dummy environment. If it did anything, we'd describe its | ||
161 | % implementation here. | ||
162 | % \begin{macrocode} | 247 | % \begin{macrocode} |
163 | \newenvironment{dummyEnv}{% | 248 | \define@reuse@key{author} |
164 | }{% | 249 | \define@reuse@key{title} |
165 | % \end{macrocode} | 250 | % \end{macrocode} |
166 | % \changes{v1.00a}{2019/02/22}{Added a spurious change log entry to | 251 | % This is the same as \cs{usebibentry} from \package{ebib}, but it |
167 | % show what a change \emph{within} an environment definition looks | 252 | % does not return an error if the entry field is not found: |
168 | % like.} | ||
169 | % Don't use |%| to introduce a code comment within a |macrocode| | ||
170 | % environment. Instead, you should typeset all of your comments with | ||
171 | % LaTeX---doing so gives much prettier results. For comments within a | ||
172 | % macro/environment body, just do an |\end{macrocode}|, include some | ||
173 | % commentary, and do another |\begin{macrocode}|. It's that simple. | ||
174 | % \begin{macrocode} | 253 | % \begin{macrocode} |
175 | } | 254 | \def\get@bibentry#1#2{\@ifundefined{reuse@#1@#2}{} |
255 | {\@nameuse{reuse@#1@#2}}} | ||
176 | % \end{macrocode} | 256 | % \end{macrocode} |
177 | % \end{environment} | 257 | % \DescribeMacro{\icite} |
178 | % | ||
179 | % \begin{macrocode} | 258 | % \begin{macrocode} |
180 | \endinput | 259 | \NewDocumentCommand{\icite}{o o m O{\ic@dfltcit}}{% |
181 | %</package> | 260 | \IfNoValueTF{#1} |
261 | {\index{\get@bibentry{#3}{author}!\emph{\get@bibentry{#3}{title}}}% | ||
262 | \csname #4\endcsname{#3}} | ||
263 | {\IfNoValueTF{#2} | ||
264 | {\index{\get@bibentry{#3}{author}!\emph{\get@bibentry{#3}{title}}!#1}% | ||
265 | \csname #4\endcsname[{#1}]{#3}} | ||
266 | {\index{\get@bibentry{#3}{author}!\emph{\get@bibentry{#3}{title}}!#2}% | ||
267 | \csname #4\endcsname[#1][{#2}]{#3}} | ||
268 | } | ||
269 | } | ||
182 | % \end{macrocode} | 270 | % \end{macrocode} |
271 | % \iffalse | ||
272 | %</package> | ||
273 | % \fi | ||
183 | %\Finale | 274 | %\Finale |
275 | \endinput \ No newline at end of file | ||