我知道LaTeX
/TeX
是一种完整的编程语言,但我找不到任何有关制作列表或向量的主题,就像在 C# 或 C++ 中一样。我的目标是制作一个列表,在其中存储我的名字\newenvironment
(例如,让它成为类似部分的东西),并通过列表中的编号引用它。
列表大小不能是常数,而应该取决于环境被调用的时间。这能做到吗?(或者我应该制作一个程序,它将操作文本然后编译它?)
我已经写了一个通过写入外部文件并从中读取的示例,它正确吗?
\documentclass{book}
\setlength\parindent{0pt}
\makeatletter
\newcommand{\Dotfill}{\leavevmode \cleaders \hb@xt@ .8em{\hss .\hss }\hfill \kern \z@}
\makeatother
\newwrite\contentfile
\immediate\openout\contentfile=\jobname.txt
\newcounter{Section}
\newenvironment{Section}[1]
{
\stepcounter{Section}
\vspace{10pt}
{\Large{$\S\theSection.$ #1}} \\[5pt]
\def\theSectionName {#1}
\immediate\write\contentfile{\string\S \theSection. \theSectionName \string\Dotfill \thepage\string\\}
}
\begin{document}
\pagestyle{empty}
\immediate\write\contentfile{\string\begin{center}}
\immediate\write\contentfile{\string\begin{minipage}{10cm}}
\Section{section one}
this is first
\Section{section two}
hjykfkk
\Section{section three}
hjykfkk dfga dfgagr gagergreghah
\newpage
\Section{section four}
hjykfkk dfga dfgagr gagergreghah
\immediate\write\contentfile{\string\end{minipage}}
\immediate\write\contentfile{\string\end{center}}
\immediate\closeout\contentfile
\input{\jobname.txt}
\end{document}
答案1
实际上,我认为 OP 试图重新发明\addcontentsline
和\addtocontents
功能,但在我看来,这些功能可以毫不费力地使用。这Section
是任何其他环境的示例。
\documentclass{book}
\setlength\parindent{0pt}
\makeatletter
\newcommand{\listofenvironments}{%
\section*{The environments}
\@starttoc{env}% Starting to show the environment list (file extension `.env`)
}
\makeatother
\newcounter{Section}
\newenvironment{Section}[1]
{%
\stepcounter{Section} % should be \refstepcounter rather?
\vspace{10pt}
{\Large{$\S\theSection.$ #1}} \\[5pt] %Is this necessary?
% Write the number and enviroment name to the `.env` list file
\addcontentsline{env}{section}{\protect\numberline{\theSection}~#1}%
% \addtocontents{env}{\protect\contentsline{section}{\theSection~#1}{\thepage}}
}
\AtBeginDocument{%
\addtocontents{env}{\protect\begin{center}}
\addtocontents{env}{\protect\begin{minipage}{10cm}}
}
\AtEndDocument{%
\addtocontents{env}{\protect\end{minipage}}
\addtocontents{env}{\protect\end{center}}
}
\begin{document}
\pagestyle{empty}
%\immediate\write\contentfile{\string\begin{center}}
%\immediate\write\contentfile{\string\begin{minipage}{10cm}}
\Section{section one}
this is first
\Section{section two}
hjykfkk
\Section{section three}
hjykfkk dfga dfgagr gagergreghah
\newpage
\Section{section four}
hjykfkk dfga dfgagr gagergreghah
\listofenvironments
\end{document}