Last active
December 30, 2025 19:26
-
-
Save maxanier/c63f9b5dede1ecda6cf9b0e346ec413d to your computer and use it in GitHub Desktop.
Latex package - Convenient toggle-able censoring of information for double-blind review e.g. for IEEEtran class
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| % doubleblind - @maxanier https://gist.github.com/maxanier/c63f9b5dede1ecda6cf9b0e346ec413d | |
| % Convenient toggle-able censoring of information for double-blind review e.g. for IEEEtran class | |
| % Supports linebreaks in text | |
| % | |
| % Include as | |
| % \usepackage[]{doubleblind} | |
| % and add `anonym` option to enable censoring: | |
| % \usepackage[anonym]{doubleblind} | |
| % | |
| % Provides the following commands: | |
| % \anonymize{} | |
| % Reliably removes the contained content and replaces it with blank space if anonym is enabled | |
| % \includegraphicsanonym[options]{image1}{image2} | |
| % Includes the first image when anonym is enabled, and the second one otherwise | |
| % | |
| % If loaded it modifies the following commands to automatically censor the content: | |
| % \thanks | |
| % \IEEEauthorblockN | |
| % \IEEEauthorblockA | |
| \NeedsTeXFormat{LaTeX2e} | |
| \ProvidesPackage{doubleblind}[2022/06/10 Simple anonymization for double blind review] | |
| % Use soulutf8 to allow unicode characters like ä | |
| \RequirePackage{soulutf8} | |
| %Define if condition identifier with default value | |
| \newif\if@anonymize | |
| \@anonymizefalse | |
| % Package options | |
| \DeclareOption{anonym}{\@anonymizetrue} | |
| \DeclareOption*{\PackageWarning{doubleblind}{Unknown ‘\CurrentOption’}} | |
| \ProcessOptions\relax | |
| % Provide anonymization commands - Basic functionality based on https://tex.stackexchange.com/a/26303/272094 | |
| \if@anonymize | |
| \DeclareRobustCommand*\anonymize{% | |
| \SOUL@setup% | |
| \def\SOUL@everytoken{\phantom{\the\SOUL@token}}% | |
| \def\SOUL@everyhyphen{% | |
| \discretionary{% | |
| \SOUL@setkern\SOUL@hyphkern% | |
| \phantom{\SOUL@sethyphenchar}% | |
| }{}{}% | |
| }% | |
| \def\SOUL@everyexhyphen##1{% | |
| \SOUL@setkern\SOUL@hyphkern% | |
| \hbox{\phantom{##1}}% | |
| \discretionary{}{}{% | |
| \SOUL@setkern\SOUL@charkern% | |
| }% | |
| }% | |
| \SOUL@% | |
| } | |
| \newcommand{\includegraphicsanonym}[3][]{\includegraphics[#1]{#2}} | |
| \else | |
| \newcommand{\anonymize}[1]{#1} | |
| \newcommand{\includegraphicsanonym}[3][]{\includegraphics[#1]{#3}} | |
| \fi | |
| % Overwrite IEEEtran commands | |
| \ifdefined\thanks | |
| \NewCommandCopy{\IEEEtranthanks}{\thanks} | |
| \renewcommand{\thanks}[1]{\IEEEtranthanks{\anonymize{#1}}} | |
| \fi | |
| \ifdefined\IEEEauthorblockN | |
| \NewCommandCopy{\IEEtranIEEEauthorblockN}{\IEEEauthorblockN} | |
| \renewcommand{\IEEEauthorblockN}[1]{\IEEtranIEEEauthorblockN{\anonymize{#1}}} | |
| \fi | |
| \ifdefined\IEEEauthorblockA | |
| \NewCommandCopy{\IEEtranIEEEauthorblockA}{\IEEEauthorblockA} | |
| \renewcommand{\IEEEauthorblockA}[1]{\IEEtranIEEEauthorblockA{\anonymize{#1}}} | |
| \fi |
Author
Using this as is with the latest IEEEtran.sty gave me an error upon processing \maketitle. Apparently, something doesn't like this being pseudo-empty, so I fixed it to say "anonymous" instead:
\ifdefined\IEEEauthorblockN
\NewCommandCopy{\IEEtranIEEEauthorblockN}{\IEEEauthorblockN}
\renewcommand{\IEEEauthorblockN}[1]{\IEEtranIEEEauthorblockN{
\if@anonymize
Anonymous
\else
#1
\fi
}}
\fi
\ifdefined\IEEEauthorblockA
\NewCommandCopy{\IEEtranIEEEauthorblockA}{\IEEEauthorblockA}
\renewcommand{\IEEEauthorblockA}[1]{\IEEtranIEEEauthorblockA{
\if@anonymize
Anonymous Affiliation
\else
#1
\fi
}}
\fi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Include with
\thanks\IEEEauthorblockN\IEEEauthorblockATo use alternative images (if the original e.g. contains logos):
To censor alternative content:
\anonymize{lorem ipsum}Unlike \phantom line breaks are supported.