如何在 WinEdt 中获取 LaTeX 文档中所有标签的列表

如何在 WinEdt 中获取 LaTeX 文档中所有标签的列表

我正在使用 LaTeX 和 WinEdt 编写一个大型文档。我已标记了每个章节、部分等。我想打印出仅包含标签的列表(这样我以后就不会重复一个,并且我可以轻松使用它来编写\refs)。

有没有办法做到这一点?

答案1

这可以在 WinEdt 中直接以非常简单的方式完成:

  1. 显示Gather界面(从ViewWinEdt>=6 中的菜单)
  2. 按下Collect Items工具栏上的按钮
  3. 跳转到标签Label页,你可以看到所有标签

此外,您现在可以按下界面工具栏中的按钮Copy并将其粘贴到空白文档中,以对标签进行搜索

答案2

我不知道标签列表,但你可以尝试使用showkeys使用 CTAN 的软件包将标签打印在页边空白处,无论您定义标签在哪里。我在最终校对时会使用它来确保所有内容都已贴好标签且井然有序。

答案3

我想要一份我的项目中所有标签的列表,但对这里列出的答案并不完全满意,所以我编写了一些 Python 来搜索我的 LaTeX 项目文件,找到所有标签,并按类别打印出来。这是一个演示代码的 iPython 笔记本。此代码假定您的所有标签都采用 chp:chapter_name 或 fig:fig_name 的形式。即中间带有冒号的单词字符。可以修改正则表达式模式以适合您使用的任何约定。

以下是代码的重要部分:

# reg exp to find full label specifications
patt = re.compile("\\label{(\w*:\w*)}") 
# reg exp to find `addtotoc` labels
app_patt = re.compile("(\w+:\w+)")

lbls = []
for root, dirs, files in os.walk(chdir):
    for fn in files: 
        if fn == 'main.tex':
            # my project has some appendices that are pulled into
            # the project using includepdf and the labels for these
            # are specified using `addtotoc`. This if statement
            # finds those labels in main.tex.
            with open(os.path.join(root, fn)) as f:
                lbls.extend(re.findall(app_patt, f.read()))
        elif fn.endswith(".tex") and fn<>"zTemplateChapter1.tex":
            # there's a template file in my project that I don't
            # want to search for labels.
            with open(os.path.join(root,fn)) as f:
                txt = f.read()
                labels = re.findall(patt, txt)
                lbls.extend(labels)
typs = []
names = []
for lbl in lbls:
    t, n = lbl.split(':')
    typs.append(t)
    names.append(n)

我的项目的输出如下:

app:
    depth_param_est
    param_est
    preprocessing
    water_column

chp:
    BPS
    Depth
    Intro
    OpticalRS
    ParamEst
    Water

sec:
    curve_fit_est
    lin_reg_est

fig:
    bps_fig1
    pd_K_ests
    pe_curve_fit
    pe_dwm_bars
    pe_linear_K_est
    pe_linear_K_est_dr
    pe_location_map
    pe_surf_corr_K
    wcc_depths
    wcc_imgcomp
    wcc_location_map
    wcc_method_comp
    wcc_parallel

tab:
    est_parameters

eq:
    albedo_plus
    geometric_factor
    k_from_slope
    linregress
    lyz_model_sag
    lyz_model_transformed
    lyz_shallow_water
    lyz_transform
    mar_sag_comp
    mar_wcc
    maritorena9a
    maritorena_albedo_subsurf
    maritorena_model
    maritorena_toa
    refraction
    sag_index_radiance
    sag_ref_index
    surf_correction
    surf_ref
    toa_refletance
    toar_deep

答案4

我没有WinEdt。所以我无法在 中测试以下内容WinEdt

您可以使用拉布斯特文件。编译 lablst.tex 文件。
(即执行类似以下操作latex lablst.tex

(1)它会要求您输入 latex 文件的名称。输入 latex 文件的名称。(例如,如果您的 latex 文件的名称是 ,myfile.tex则输入myfile。)

(2)系统会要求您输入文档类别。输入文档类别。(例如,如果您的文档类别是,article则输入article

(3)它会要求您输入所使用的软件包列表。(您可以直接点击enter这里,或者,如果您愿意,也可以输入列表。)

然后它将生成一个文件,其中列出了您使用过的所有标签。以下是示例。我的文件名是 test.tex,如下所示。(我使用 TeXShop 来执行此操作。)

\documentclass[12pt]{article}
\begin{document}

\section{Table of Contents}\label{toc}
The \verb-\tableofcontents- command produces table of contents.

\subsection{List of figures\label{list} and Tables}\label{lof}
The commands \verb-\listoffigures- and \verb-\listoftables- produce
list of figures and list of tables, respectively. 

\section{Cross Referencing}
You can assign a \textit{key} of your choice to a \verb-figure-, a \verb-table-, 
an \verb-equation-, \verb-equation array-, \verb-enumerate-, \verb-theorems- 
or a \verb-section-.  The key is assigned a number by the \verb-\label- command  
and the number is printed by the \verb-\ref- command.  For example, 
``see section~\ref{toc} for table of contents" can be produced by 
\verb-see section~\ref{toc} for table of contents-.  \verb-toc- is the key assigned 
to section 1 by \verb-\label{toc}-. 

\subsection*{labeling words}
You can label a word with a key and refer to it back using \verb-\pageref- command.  
For example, the list of figures sub-section appears on page~\pageref{list}.

\end{document} 

以下是 lablst.tex 输出。

在此处输入图片描述

相关内容