%% Copyright (C) 2017 by Ruini Xue %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3a %% 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 2008/05/04 or later. \ProvidesPackage{zebra-goodies}[2017/11/26 0.2.0 LaTeX goodies for paper writing.] \RequirePackage{kvoptions} \SetupKeyvalOptions{ family=zebra, prefix=zebr@, setkeys=\kvsetkeys} \DeclareBoolOption{draft} \DeclareBoolOption{microtype} \setkeys{zebra}{draft,microtype} \ProcessKeyvalOptions{zebra} % comment this if you do not need. \ifzebr@microtype \RequirePackage{microtype} \fi \RequirePackage{xcolor} \RequirePackage{tikzpagenodes} \RequirePackage{marginnote} \RequirePackage{manfnt} %%%%%%%%%%%%%%%%%% % zebra-note %%%%%%%%%%%%%%%%%% % From: http://tex.stackexchange.com/questions/247449/making-marginnote-to-appear-either-side-of-twocolumn-twoside-document-part-ii % I did a little edit. \newlength{\zebr@tempdima} \newcount{\zebr@tikzpage} \newcommand*{\zebr@marginnote}[1]{% \begin{tikzpicture}[remember picture, overlay]% \pgfextractx{\zebr@tempdima}{\pgfpointanchor{current page text area}{center}}% \global\zebr@tempdima=\zebr@tempdima \global\zebr@tikzpage=\oddpage@page \end{tikzpicture}% \begingroup \ifdim\zebr@tempdima>0pt \reversemarginpar\fi \marginnote{#1}% \endgroup% resets \reversemarginpar } \def\zebr@note{% \ifzebr@draft\expandafter\zebr@note@\else\expandafter\@gobblefour\fi} % #1: note name % #2: color % #3: assignee % #4: note text \newcommand{\zebr@note@}[4]{% \zebr@marginnote{\textcolor{#2}{\dbend}}% \expandafter\stepcounter{zebr@num@#1}% \textcolor{#2}{[\textbf{\MakeUppercase{#1}\textit{#3}:} #4]}} \newcommand{\zebr@prepend}[2]{% \ifx\relax#2\relax\relax\else#1#2\fi} \def\zebranewnote#1#2{% \@ifundefined{#1}{\zebr@newnote{#1}{#2}}{% \PackageWarning{zebra}{zebra already defines note: '#1'}}} \global\def\zebr@noteslist{} \def\zebr@newnote#1#2{% \g@addto@macro\zebr@noteslist{,#1}% \expandafter\newcounter\expandafter{zebr@num@#1} \expandafter\newcommand\csname zebr@color@#1\endcsname{#2} \expandafter\newcommand\csname #1\endcsname[2][]{% \zebr@note{#1}{#2}{\zebr@prepend{@}{##1}}{##2}}} \def\zebr@listnotes{% \ifzebr@draft\zebr@listnotes@\fi} \def\zebr@listnotes@{% \def\temp@a{} \edef\temp@noteslist{\expandafter\@gobble\zebr@noteslist} \@for\temp@b:=\temp@noteslist\do{% \expandafter\ifnum\expandafter\value\expandafter{zebr@num@\temp@b} > 0% \def\temp@c{\expandafter\csname thezebr@num@\temp@b\endcsname} \edef\temp@d{\noexpand\textcolor{\expandafter\csname zebr@color@\temp@b\endcsname}{\temp@b} \noexpand & \temp@c \noexpand\\} \expandafter\g@addto@macro\expandafter\temp@a\expandafter{\temp@d}% \fi} \ifx\temp@a\@empty\else% \noindent\dotfill\par \section*{Zebra Notes} \par \medskip \begin{center} \begin{tabular}{lr} \hline \textbf{Type} & \textbf{Number} \\\hline \temp@a \hline \end{tabular} \par \medskip \textbf{Do fix all of them before submitting.} \end{center} \fi} \AtEndDocument{\zebr@listnotes} \zebranewnote{todo}{purple} \zebranewnote{fixed}{teal} \zebranewnote{comment}{blue} \zebranewnote{note}{violet} \zebranewnote{placeholder}{gray} %%%%%%%%%%%%%% % zebra-color %%%%%%%%%%%%%% \definecolor{zebrablue}{HTML}{4F81BD} \definecolor{zebrared}{HTML}{C0504D} \definecolor{zebragreen}{HTML}{9BBB00} \definecolor{zebrapurple}{HTML}{9F4C7C} \definecolor{zebrayellow}{HTML}{D9CD2E} \definecolor{zebragreen2}{HTML}{00E000} \endinput