How to get the value of the document title in latex? - latex

I am wondering how I can get the document title in LaTex, for use elsewhere in the document. I just want to be able to echo it.

Using \#title does not work because \maketitle clears \#title. This seems silly to me but that's the way it is. One solution is to redefine \title to save the title somewhere else. For instance,
\def\title#1{\gdef\#title{#1}\gdef\THETITLE{#1}}
then use \THETITLE.
You can do the other way around: \def\MYTITLE{...} then \title{\MYTITLE} and later use \MYTITLE again.

I had success just writing a new command.
\newcommand{\mytitle}{...}
\title{\mytitle}

There is a package called authoraftertitle that does exactly this
\documentclass{article}
\usepackage{authoraftertitle}
\setlength\parindent{0 pt}
\begin{document}
\title{a good title}
\author{a better author}
\date{the best date}
\maketitle
the title is: \textbf{\MyTitle} \\
the author is: \textbf{\MyAuthor} \\
the data is: \textbf{\MyDate} \\
\end{document}

This is a workaround...
\let\titleoriginal\title % save original \title macro
\renewcommand{\title}[1]{ % substitute for a new \title
\titleoriginal{#1}% % define the real title
\newcommand{\thetitle}{#1} % define \thetitle
}
\title{This is my title}
\begin{document}
\thetitle
\end{document}
The short version of the title was ignored here...

Related

How to reset chapter and section counter with \part*

Sorry for bad english
I have a problem with my Latex code (I'm not very good in coding). I want an output like this:
Part I
Chapter I
Chapter II
Part II
Chapter I
Chapter II
I also wanted to create a box around my title of the parts , this doesn't work like I wanted, so I used \part* and \addcontentsline{toc}{part}{PART I} (to write the line in the table of content).So the code is:
\fbox{\begin{minipage}{\linewidth}
\part*{\begin{center}
PART I
\end{center}}
\end{minipage}}
\addcontentsline{toc}{part}{PART I}
\vspace{0.7cm}
I saw this methode to reset the counter of the chapters:
\makeatletter
\#addtoreset{chapter}{part}
\makeatother
but this doesn't work, I think it's due to use of \part*.
Has anyone an idea? THNANKS!
Hope the example bellow can help:)
\documentclass[a4paper,11pt,]{report}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\newpage
\fbox{\begin{minipage}{\linewidth}
\part*{\begin{center}
INTRODUCTION
\end{center}}
\end{minipage}}
\addcontentsline{toc}{part}{INTRODUCTION}
\vspace{0.7cm}
\chapter{Hello}
\section{my}
\newpage
\fbox{\begin{minipage}{\linewidth}
\part*{\begin{center}
CONCLUSION
\end{center}}
\end{minipage}}
\addcontentsline{toc}{part}{CONCLUSION}
\vspace{0.7cm}
\chapter{name}
\section{is}
\end{document}
As you already know the solution for \part, how about simply using this and make it look like \part*? This has the advantage that you could add the boxes around the part titles automatically.
\documentclass[a4paper,11pt,]{report}
\usepackage[newparttoc]{titlesec}
\titleformat{\part}[frame]
{\normalfont}
{}
{8pt}
{\Large\bfseries\filcenter}
\usepackage{titletoc}
\titlecontents{part}[0em]
{\vspace{2em}\large\bfseries\sffamily\relax}
{\contentslabel[\relax]{0em}}{}{\hfill\contentspage}
\usepackage{hyperref}
\makeatletter
\#addtoreset{chapter}{part}
\makeatother
\begin{document}
\tableofcontents
\part{INTRODUCTION}
\chapter{Hello}
\section{my}
\part{CONCLUSION}
\chapter{name}
\section{is}
\end{document}

[Beamer/Latex]: Getting \part name from different part

Hi I would like to create some sort of my own table of content in beamer presentation where there will be all parts with all sections listed.
To this moment I came up with this solution to list all \tableofcontents in one slide
\begin{frame}
\begin{multicols}{2}
\setcounter{tocdepth}{1}
\foreach\x in {1,...,\totvalue{part}}{%
\vskip 0.4cm
\tableofcontents[part=\x]%
}%
\setcounter{tocdepth}{2}
\end{multicols}
\end{frame}
Problem here is that I get section of each part but there is not partname listed.
Is there way how to access name of part by index \x of for-cycle? Something like \insertpart[\x]?
Ok with help of one co-student of mine I came up with solution to my problem.
\makeatletter
\AtBeginPart{
\write\#auxout{%
\noexpand\expandafter\noexpand\gdef\noexpand\csname
part\thepart name\noexpand\endcsname{\beamer#partname}}
}
\makeatother
\begin{document}
\frame{\maketitle}
\section*{Outline}
\begin{frame}{Outline of Presentation}
\begin{multicols}{2}
\setcounter{tocdepth}{1}
\foreach\x in {1,...,\totvalue{part}}{%
\medskip\expandafter\let\expandafter\partname
\csname part\x name\endcsname
\penalty-999
\textit{\partname}
\medskip
{\let\vfill=\relax\tableofcontents[part=\x]}\vfill
\penalty-999
}%
\setcounter{tocdepth}{2}
\end{multicols}
\end{frame}
Unfortunately I cannot write down deep description of how exactly it works but basically it takes names of parts during first run of pdflatex and saves them into .aux file. Then during second run of pdflatex it will correctly print them out. Then negative penalty is added to each block so partname is not splitted out of rest of part-toc.
So two runs of pdflatex are needed to work it correctly but it should work quite nicely. I managed to create table of content with 4 parts.
example
Hopefully it will help someone.

Remove default Date in LaTeX article

How do I remove the default date that a documentclass{article} adds in LaTeX?
Thanks
Try using \date{}.
use \date{} before "\begin{document}"
Also ensure that you dont have any variation of this in your code.
{\large \today}
A blank \date{} will still use some vertical spacing. Check this post on TeX Exchange for a comprehensive list of alternatives, like the titling package.
The command
\documentclass{article}
\begin{document}
\title{text}
\author{names}
\maketitle
\date{}
\end{document}
will give the out put as shown here:
But the code:
\documentclass{article}
\begin{document}
\title{text}
\author{names}
\date{}
\maketitle
\end{document}
will give the desired output, I believe, you want:
The command \date{} should be put after \author{names} and before \maketitle.
The exact code snippet to "copy and paste" is as follows:
\date{}
\begin{document}

Environment inside a longtable with LaTeX

I would like to create a new environment to print a header and a footer between sections of a table.
I did this:
\documentclass{article}
\usepackage{longtable}
\newenvironment{env}{Heading&&& \\}{\hline \\}
\begin{document}
\begin{longtable}{p{7cm}lrr}
\begin{env}
Content&b&c&d
\end{env}
\end{longtable}
\end{document}
but I get insulted by the compiler. See here for the complete output.
Does someone see the problem?
There are two problems here. First, you need an \\ at the end of the "Content&b&c&d" line. Second, environments don't work inside tabular/longtable — that's where most of your error messages are coming from. It may be possible to diddle them into working, but it's way beyond my TeX-fu. This is the best I can come up with:
\documentclass{article}
\usepackage{longtable}
\newcommand{\startenv}{Heading\tabularnewline}
\newcommand{\stopenv}{\hline\tabularnewline}
\begin{document}
\begin{longtable}{p{7cm}lrr}
\startenv
Content&b&c&d \\
\stopenv
\end{longtable}
(It is not strictly necessary to use \tabularnewline instead of \\, but it will avoid headaches if you ever mix this with other environments that use \\ for their own purposes.)

Undefined control sequence at first line of a document

\documentclass{book}
\usepackage{amsmath}
\usepackage[german]{babel}
\usepackage{amssymb}
\usepackage{amsxtra}
\usepackage[dvips]{epsfig,psfrag}
\usepackage{listings}
\newcommand{\refchapter}[1]{Kapitel~\ref{#1}}
\newcommand{\refsec}[1]{Sektion~\ref{#1}}
\newcommand{\refeqn}[1]{Gleichung~(\ref{#1})}
\newcommand{\reffig}[1]{Abbildung~\ref{#1}}
\title{\bf Grundz\"uge der Softwareentwicklung \\
{\small Analyse- und Entwurfsdokument} \vspace{1cm}\\
\centering
\epsfig{file=figures/logo.eps,width=.4\textwidth}
}
\author{Uschi Musterfrau, Detlef Mustermann und Ralf Auchmustermann}
\date{Matr.-Nr. 0815, 0816 und 0817 \\
email: {\tt [uschi|detlef|ralf]#rwth-aachen.de}
}
\begin{document}
\lstloadlanguages{[ISO]C++}
\lstset{basicstyle=\small, numbers=left, numberstyle=\footnotesize,
stepnumber=1, numbersep=5pt, breaklines=true, escapeinside={/*#}{#*/}}
\pagestyle{headings}
\maketitle
\tableofcontents
\include{vorwort}
\include{analyse}
\include{entwurf}
\include{nutzerdoc}
\include{entwicklerdoc}
\bibliographystyle{plain}
\bibliography{analyse_entwurf}
\appendix
\include{quellcode}
\end{document}
this is how my file starts. I didn't even edit it, I received it like this. However, if I want to make a pdf, it gives me the undefined control sequence error at the first line... What is wrong??
My guess is that you're trying to use TeX instead of LaTeX. TeX won't recognize the \documentclass command. Make sure you use LaTeX.
It might be that one of the tools in your tool chain gets irritated by a Byte-Order Mark (BOM), which is a special Unicode character to indicate the endianness used in your file.
Unfortunately, a BOM may have unwanted side-effects.
You might try to save the file with another editor which won't add this mark in the beginning, or remove it with a hex editor.
try getting rid of \usepackage[dvips]{epsfig,psfrag} if you're using pdflatex.
Perhaps TeXshop doesn't recognize your file as a LaTeX file and runs it with plain TeX or ConTeXt. If you can post your logfile (the beginning) here, we can help you for sure.

Resources