تالار گفتگوی پارسیلاتک
لاتک LATEX => حروفچینی مستندات => نويسنده: ابوالفضل دیانت در ژوئن 07, 2013, 10:43:19 am
-
با سلام
من میخواهم که در جایی از متن عنوان فصل و بخش جاری را بیاورم. بدین منظور دو دستور زیر را استفاده کرده ام.
\makeatletter
\apptocmd{\@chapter}{\gdef\currentchapter{#2}}{}{}
\def\currentchapter{?}
\apptocmd{\@section}{\gdef\currentsection{#2}}{}{}
\def\currentsection{?}
\makeatother
اما متاسفانه دستور \currentchapter کار می کند اما دستور \currentsection کار نمی کند.
باتشکر
-
اگر دلیل خاصی برای استفاده از بسته etoolbox ندارید، میتونید از بسته nameref استفاده کنید:
\documentclass{book}
\usepackage{nameref}
\makeatletter
\newcommand*{\currentname}{\@currentlabelname}
\makeatother
\begin{document}
\chapter{Chapter Test}\label{ch1}
\section{Section One}
This is chapter: \nameref{ch1}\\
This is section: \currentname
\section{Section Two}
This is section: \currentname
\end{document}
-
با سلام
نه اصراری از استفاده از etoolbox ندارم.
مشکل من در استفاده از بسته nameref این است که:
قرار است که این کار به صورت خودکار انجام پذیرد، لذا ممکن است کاربر برای فصل و یا بخش label تعریف کند. من می خواهم دستوری را تعریف کنم که کاربر هر بار آن را وارد کرد، نام بخش بیاید. یعنی کاربر فقط بزند \currentsection و نام بخش چاپ شود.
در این حالت اگر شما از دستور \currentname در بعد از subsection استفاده کنید این امر موجب می شود که نام subsection چاپ شود نه نام section
باتشکر