我最近越来越多地使用 l3doc 和 DocStrip。
此外,我越来越多地使用 LaTeX3,并且喜欢它能够为变量和函数赋予可读且有意义的名称。添加范围和类型信息后,名称往往比以前长得多。
实际上,我正在编写一个.dtx
文件,它实际上包含三个(或更多)包。我@@
还使用为变量和函数赋予了与模块相关的名称,这使得名称更长。
当通过 LaTeX 处理文件以生成文档时,在所有代码示例中,@@
将被替换为最后提到的模块名称,在本例中为tuc_m_k_calc
。
% \begin{macrocode}
%<*label>
%@@=tuc_m_k_label>
%</label>
%<*concept>
%<@@=tuc_m_k_concept>
%</concept>
%<*calc>
%<@@=tuc_m_k_calc>
%</calc>
% \end{macrocode}
因此,实现将会呈现如下内容:
\bool_new:N \l_@@_opt_draft_bool
但将排版为
\bool_new:N \l_tuc_m_k_calc_opt_draft_bool
此字符串也将被打印到边注和索引中,忽略其兄弟字符串的\l_tuc_m_k_concept_opt_draft_bool
含义\l_tuc_m_k_label_opt_draft_bool
和描述的事实。
我在想,如果打印\l_@@_opt_draft_bool
到文档中是不是一个更好的解决方案。显然,它节省空间且经济。这是公平的,因为所有三种变体也很容易符合这个描述。我认为,作为完全扩展的名称,它甚至更容易阅读和理解。(事实上,在修复错误时,我经常希望 LaTeX 能将名称反转为原始代码,让我更容易在文件中找到位置.dtx
。)
通过使用这个代码代替上面提到的代码,可以轻松实现这个结果:
% \iffalse
% \begin{macrocode}
%<*label>
%@@=tuc_m_k_label>
%</label>
%<*concept>
%<@@=tuc_m_k_concept>
%</concept>
%<*calc>
%<@@=tuc_m_k_calc>
%</calc>
% \end{macrocode}
% \fi
这将使文档更具可读性(在我看来)。
您认为这是一个好主意吗?是否有我尚未想到的副作用?如果您推荐这种风格,那么实现它的最佳方法是什么?