我正在寻找一种有效的方法,使用假名列表来匿名化受访者的身份。
学术和教学案例研究经常使用访谈和观察数据的直接引用。在这些情况下,通常使用假名和/或角色标签来识别说话者。匿名化试图保护研究对象的隐私,遵循社会和人文科学研究伦理的“不伤害”原则。使用假名可以保留来源归属(即证明引用是实际经验证据的一个例子)。
我想象在我的 latex 文档中写下带有正确归属的引文,它们将在排版时被替换。类似\person{jenny}
和\personrole{ceo}
目录命令之类的命令\dramatispersonae
会生成假名及其在某个部分中的角色的记录,有点像词汇表或戏剧角色,即剧中人物。
也许我可以用 bibtex 来做到这一点,但我需要将剧中人物与参考书目分开。
注:我认为这有点像创建一个词汇表、一个名称登记册或列出文档中使用的关键字(即使用 biblatex 创建人员登记册或者建立有参考资料的人员登记册)但我指的不是审查、编辑或“隐藏”文本的方法(即匿名化文档的有效方法)
答案1
实现此目的的一种方法是(如果我正确理解了您的要求)创建带有数字的控制序列(命令)名称的准数组,以便您可以使用计数器循环遍历数组。
此处的命令\newperson
有三个参数:每个人的假名、真实姓名和角色。它根据当前人员编号将每个参数存储在一个数组中(例如\person0pseudonym
)。它还从假名创建一个控制序列,该序列扩展为该人员的数组编号。然后有命令可以单独访问每个人的数据或获取所有人的列表。您可以自定义和的格式,\listperson
使其\listpeople
成为表格或其他格式。
该\ID
命令是一个示例,说明如何引用文本中的名称,以便控制是否显示真实姓名。您只需说明是否希望此命令的结果输出数组中的真实姓名或假名。
\documentclass{article}
% Add a person to the list of people
% (implemented as an "array" of control-sequence names (person0, person1, etc.)
\newcounter{person}
% #1 Pseudonym, #2 Real Name, #3 Role
\newcommand{\newperson}[3]{%
\expandafter\gdef\csname person\theperson pseudonym\endcsname{#1}%
\expandafter\gdef\csname person\theperson name\endcsname{#2}%
\expandafter\gdef\csname person\theperson role\endcsname{#3}%
\expandafter\edef\csname #1\endcsname{\theperson}%
\stepcounter{person}%
}
% Fetch specific data from member of list of people
% For the next four commands, #1 csname based on pseudonym, or personID number
\newcommand{\pseudonym}[1]{%
\csname person#1pseudonym\endcsname%
}
\newcommand{\realname}[1]{%
\csname person#1name\endcsname%
}
\newcommand{\personrole}[1]{%
\csname person#1role\endcsname%
}
% List all the data for one person
% (formatting could be customized)
\newcommand{\listperson}[1]{%
\pseudonym{#1}: \realname{#1} (\personrole{#1})%
}
% List all the data for all the people
\newcounter{currentperson}
\newcommand{\listpeople}{%
\setcounter{currentperson}{0}%
\begin{itemize}
\loop
\item \listperson{\thecurrentperson}
\stepcounter{currentperson}%
\ifnum\value{currentperson} < \value{person}
\repeat%
\end{itemize}%
}
% Use the \ID command to refer to person in text using their name as a control sequence (e.g., \ID{\Jenny})
\newcommand{\userealnames}{\let\ID\realname}
\newcommand{\usepseudonyms}{\let\ID\pseudonym}
\usepseudonyms % default is not to show real names in the transcript
\begin{document}
% You could input a list like this from a separate file
\newperson{Jenny}{Jane Doe}{Line cook}
\newperson{Frances}{John Doe}{Cashier}
\newperson{Ralph}{Jim Doe}{Manager}
Here is the information on the first person: \listperson{\Jenny}.
\subsection*{List of People}
\listpeople
\subsection*{Pseudonyms}
\ID{\Jenny} accused \ID{\Frances} of stealing money.
\ID{\Ralph} mediated their dispute and determined that no money was stolen.
\subsection*{Now with Real Names}
\userealnames
\ID{\Jenny} accused \ID{\Frances} of stealing money.
\ID{\Ralph} mediated their dispute and determined that no money was stolen.
\end{document}