我正在使用 LaTeX 和 WinEdt 编写一个大型文档。我已标记了每个章节、部分等。我想打印出仅包含标签的列表(这样我以后就不会重复一个,并且我可以轻松使用它来编写\ref
s)。
有没有办法做到这一点?
答案1
这可以在 WinEdt 中直接以非常简单的方式完成:
- 显示
Gather
界面(从View
WinEdt>=6 中的菜单) - 按下
Collect Items
工具栏上的按钮 - 跳转到标签
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 输出。