subsection command not working in elsevier LaTeX template - latex

I am working on Elsevier template with a single column format, I am facing an issue with subsections command not working as they are displayed like a normal section with wrong numbering, for example
\documentclass[a4paper,fleqn]{cas-sc}
\begin{document}
\section{A}
\subsection{AA}
\subsubsection{BB}
\end{document}
Can anyone help me on how to fix this issue?

You're using it properly. This must be an issue with your class file (cas-sc) that you are using.

I'm not sure if this is by design (which would be a very odd behaviour), but this behaviour is caused by some redefinition in the class file. To workaround this problem one could fix these redefinitions and use
\documentclass[a4paper,fleqn]{cas-sc}
\makeatletter
\renewcommand\subsection{\#startsection{subsection}{2}{\z#}%
{10pt \#plus 3\p# \#minus 2\p#}%
{.1\p#}%
{%\let\#hangfrom\relax
\ssectionfont\raggedright }}
\renewcommand\subsubsection{\#startsection{subsubsection}{3}{\z#}%
{10pt \#plus 1\p# \#minus .3\p#}%
{.1\p#}%
{%\let\#hangfrom\relax
\sssectionfont\raggedright}}
\makeatother
\begin{document}
\section{A}
\subsection{AA}
\subsubsection{BB}
\end{document}
(don't do this if you intend to submit the document to the journal)

Related

Is there a way to make the a glossary entry clickable?

I'm making a glossary using the package \usepackage{glossaries}. This works fine but I have a slight problem.
I would like to make the word I call from the glossary (with \gls(a_word)) clickable, so the reader is automatically taken to the glossary entry that match the word he clicked on.
So far, I tried to use hyperlinks, without any success, and I couldn't find a similar problem on Internet nor on SO.
I hope you will be able to help me out with this!
Thanks by advance
Edit: Here's the code I'm using
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[nonumberlist,toc,chapter=chapter]{glossaries}
In glossary:
\makeglossaries
\setglossarypreamble{Source is INSEE}
\newglossaryentry{AAV}
{
name=AAV,
description={The description of what AAV is.}
}
In document:
sometextsometext (see \Gls{AAV}). Sometextsometext
If you load the hyperref package, the abbreviation will automatically be clickable:
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[nonumberlist,toc]{glossaries}
\makeglossaries
\setglossarypreamble{Source is INSEE}
\newglossaryentry{AAV}
{
name=AAV,
description={The description of what AAV is.}
}
\begin{document}
sometextsometext (see \Gls{AAV}). Sometextsometext
\printglossaries
\end{document}

Latex Commands with URL

I am having trouble adding a URL to the Linkedin command. I want it to essentially print the Linkedin logo, text that I want to be explicitly seen, and a URL that the user will be redirected to upon clicking it. Below is the current .cls file.
.cls file:
\newcommand{\linkedinsymbol}{\faLinkedin}
\newcommand{\printinfo}[2]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}#2\hspace{2em}}}
\usepackage{hyperref}
\newcommand{\linkedin}[1]{\printinfo{\linkedinsymbol}{#1}}
I tried turning the last line into the following:
\newcommand{\linkedin}[2]{\printinfo{\linkedinsymbol}{#1}}{\url{#2}}
However, upon doing so, I get the following errors:
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.91 ...{\printinfo{\linkedinsymbol}{#1}}{\url{#2}
}
?
! Undefined control sequence.
\hyper#linkurl ...tionraw >>}\relax \Hy#colorlink
\#urlcolor #1\Hy#xspace#en...
l.91 ...{\printinfo{\linkedinsymbol}{#1}}{\url{#2}
}
?
! Undefined control sequence.
\close#pdflink ->\Hy#endcolorlink
\Hy#VerboseLinkStop \pdfendlink
l.91 ...{\printinfo{\linkedinsymbol}{#1}}{\url{#2}
}
?
Minimum Reproducible Example:
main.tex:
\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass[10pt,letterpaper]{altacv}
\geometry{left=1cm,right=9cm,marginparwidth=6.8cm,marginparsep=1.2cm,top=1.25cm,bottom=1.25cm,footskip=2\baselineskip}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[default]{lato}
\usepackage[hidelinks]{hyperref}
\begin{document}
\linkedin{linkedin.com/in/varunjain-me}{www.linkedin.com/in/varunjain-me}
\end{document}
.cls file:
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\#ifl#t#r\fmtversion{2018/04/01}{\UseRawInputEncoding}{}
\ProvidesClass{altacv}[2018/07/27 AltaCV v1.1.4, yet another alternative class for a résumé/curriculum vitae.]
\newif\if#academicons
\DeclareOption{academicons}{\#academiconstrue}
\newif\if#normalphoto
\DeclareOption{normalphoto}{\#normalphototrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}}
\ProcessOptions\relax
\LoadClass{extarticle}
\RequirePackage[margin=2cm]{geometry}
\RequirePackage{fontawesome}
\if#academicons
\ExplSyntaxOn
\msg_redirect_name:nnn { fontspec } { font-not-found } { none }
\ExplSyntaxOff
\RequirePackage{academicons}
\newfontfamily{\AI}{academicons.ttf}
\fi
\RequirePackage{xcolor}
\colorlet{accent}{blue!70!black}
\colorlet{heading}{black}
\colorlet{emphasis}{black}
\colorlet{body}{black!80!white}
\newcommand{\itemmarker}{{\small\textbullet}}
\newcommand{\ratingmarker}{\faCircle}
\RequirePackage{tikz}
\usetikzlibrary{arrows}
\RequirePackage[skins]{tcolorbox}
\RequirePackage{enumitem}
\setlist{leftmargin=*,labelsep=0.5em,nosep,itemsep=0.25\baselineskip,after=\vskip0.25\baselineskip}
\setlist[itemize]{label=\itemmarker}
\RequirePackage{graphicx}
\RequirePackage{etoolbox}
\RequirePackage{dashrule}
\RequirePackage{multirow,tabularx}
\RequirePackage{changepage}
\setlength{\parindent}{0pt}
\newcommand{\divider}{\textcolor{body!30}{\hdashrule{\linewidth}{0.6pt}{0.5ex}}\medskip}
\newenvironment{fullwidth}{%
\begin{adjustwidth}{}{\dimexpr-\marginparwidth-\marginparsep\relax}}
{\end{adjustwidth}}
\newcommand{\linkedinsymbol}{\faLinkedin}
\newcommand{\printinfo}[2]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}#2\hspace{2em}}}
\newcommand{\linkedin}[2]{\printinfo{\linkedinsymbol}{#1}}{\url{#2}}
Here is the code that ended up working for my scenario:
\documentclass{article}
\usepackage{fontawesome}
\usepackage{xcolor}
\usepackage{hyperref}
\colorlet{accent}{blue!70!black}
\begin{document}
\newcommand{\linkedinsymbol}{\faLinkedin}
% \newcommand{\printinfo}[2]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}#2\hspace{2em}}}
\newcommand{\weblinks}[3]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}{\href{#2}{#3}}\hspace{2em}}}
% \newcommand{\linkedin}[2]{\printinfo{\linkedinsymbol}{#1}{\url{#2}}}
\newcommand{\linkedin}[2]{\weblinks{\linkedinsymbol}{#1}{#2}}
\linkedin{http://linkedin.com/in/varunjain-me}{linkedin.com/in/varunjain}
\end{document}
This minimal example works for me:
\documentclass{article}
\usepackage{fontawesome}
\usepackage{xcolor}
\usepackage{hyperref}
\colorlet{accent}{blue!70!black}
\begin{document}
\newcommand{\linkedinsymbol}{\faLinkedin}
\newcommand{\printinfo}[2]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}#2\hspace{2em}}}
\newcommand{\linkedin}[2]{\printinfo{\linkedinsymbol}{#1}{\url{#2}}}
\linkedin{linkedin.com/in/varunjain-me}{www.linkedin.com/in/varunjain-me}
\end{document}
At least it produces some output... I don't know what exactly you expect, but you can probably take it from here.

Listings adds whitespaces, how to remove it?

Hey guys,
when using listings to present code in my PDF, it adds whitespaces after some characters.
This is how it looks in the pdf (I'm not allowed to post images because of reputation, 'hence add ".png" to the url, sorry).
I'm using the following code to add the listings.
\newcommand{\lstchange}[2]{
\lstset{breaklines=true,
frame=single,
captionpos=b,
basicstyle={\ttfamily\footnotesize},
showspaces=false,
showstringspaces=false,
showtabs=false,
numberstyle={\ttfamily\footnotesize},
keywordstyle={\bfseries\color{blue}},
stringstyle=\color{darkorange}\ttfamily,
commentstyle=\color{OliveGreen},
language=#1,
morekeywords={#2} }
}
% ...
\lstchange{bash}{svn , cd, gnome-open}
\begin{lstlisting}[caption=someCaption, label=someLabel]
#!/bin/bash
svn checkout http://opendecisionrepository.googlecode.com/svn/trunk/sources/web-interface/src/main/webapp odr-appetizer-2 -r 621
cd odr-appetizer-2
#open drawing.xhtml
gnome-open drawing.xhtml
\end{lstlisting}
Does anyone of you have an idea why this happens? Even if I use the standard example from the latex wikibook this happens.
Maybe this is also important for you, the config file:
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=2.5cm, right=2.5cm, top=2.5cm, bottom=3cm, a4paper]{geometry}
\usepackage[pdftex]{graphics}
\usepackage{fancyhdr}
\usepackage{%
array,
booktabs,
dcolumn,
rotating,
shortvrb,
tabularx,
units,
url,
xcolor,
lastpage,
longtable,
lscape,
multirow,
amssymb,
amsmath,
float,
chngpage,
colortbl,
helvet,
listings
}
Thanks in advance!
Cheers,
Ben
Cannot reproduce this here (with \documentclass{article}), it looks fine. I only had to comment out "OliveGreen" because it was unknown.

How to link to a glossary item (using package glossaries)

In my document i'm using the package glossaries to create a glossary. Everything works fine except that the is no link between the words in the text and the corresponding entry in my glossary (so you can click the word to be explained and get to the glossary entry).
The most important parts of my document:
%----Header----
...
\usepackage[nonumberlist,acronym,toc,style=altlist]{glossaries}
\usepackage[
colorlinks=true,
pdfborder=0 0 0,
pdfpagelabels,
plainpages=false,
linktocpage=false,
pdfcreator={LaTeX}]{hyperref}
...
%Glossary entries
\newglossaryentry{glos:twitter}{name=Twitter,
description={Mikroblogging-Service.}}
%----Main document----
\begin{document}
\chapter{Introduction}
This text is a normal glossary item: \gls{glos:twitter}.
This text should also link to the glossary item: \glslink{glos:twitter}{Link to Twitter}
but there is no link
...
\printglossary
\end{document}
As you see i'm also using the package hyperref, but there seems to be no mechanism that automatically links words in the main text to the glossary.
I also tried to use \ref and \label, but this doesnt' work when the element that is referred is outside the main document (like my glossary is).
I'm using the makeglossaries-script coming from miktex (calling makeglossaries main on build), but this also doesn't give me a link.
Anyone knows a way to do that? Or maybe i should use another package than glossaries which supports a functionality like that?
I would also appreciate any working examples where this functionality works.
EDIT:
I just got a working minimal example where gls/glslink actually works. Seems like the linking of glossary items interfers with one of the packages im using in my document. Will have to try by adding my packages one by one to the example to see which package is the reason. The example:
\listfiles
\documentclass{article}
\usepackage[
colorlinks=true,
pdfborder=0 0 0,
pdfpagelabels,
plainpages=false,
linktocpage=false,
pdfcreator={LaTeX}]{hyperref}
\usepackage[nonumberlist,acronym,toc,style=altlist,]{glossaries}
\makeglossaries
%Glossary entries
\newglossaryentry{glos:twitter}{name=Twitter,
description={Mikroblogging-Service.}}
%----Main document----
\begin{document}
\chapter{Introduction}
Ein normales Wort aus dem Glossar: \gls{glos:twitter}.
Dieses Wort soll zum Glossar verlinkt werden: \glslink{glos:twitter}{Link to Twitter}
funktioniert aber nicht...
\clearpage
\printglossary
\end{document}
As not mentioned in the extract of my latex-code, in my documentclass, the draft property was set to true. When removing this property or setting it to false, the gls/glslink work fine.

header width on the last page of the chapter

I'm trying to turn off marginpar when starting a new multicols environment with this new environment, which uses the multicols and chngpage packages:
\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}
Which works great:
latex header http://img6.imageshack.us/img6/6757/screenshotewa.png
Uhm, almost, since on the last page of the current chapter "Lorem ipsum" it behaves like I hadn't instruct it to: \addtolength{\headwidth}{\newtextwidth}:
latex header at the end of the chapter http://img11.imageshack.us/img11/6072/screenshotwbd.png
How could I fix that?
Edit:
I'm also using fancyhdr.
2nd Edit:
A PoC:
\documentclass[12pt,a4paper,oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[top=2cm,left=2cm,right=4.5cm]{geometry}
\usepackage{chngpage}
\usepackage{color}
\usepackage{amsmath}
\usepackage[pdftex,bookmarks,pdfpagemode=UseOutlines,bookmarksopen,backref
,colorlinks,urlcolor=blue,linktocpage]{hyperref}
\usepackage{url}
\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{indentfirst}
\usepackage{listings}
\usepackage{boxedminipage}
\pagestyle{fancy}
\setlength{\columnseprule}{1pt}
\setlength{\marginparwidth}{4cm}
\rhead{\large\leftmark}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\makeatletter
\renewcommand*\#makechapterhead[1]{%
{\parindent \z# \raggedright \normalfont
\huge\bfseries
#1\par\nobreak
\vskip 20\p#
}}
\makeatother
\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\sffamily\raggedleft\footnotesize #1]%
{\sffamily\raggedright\footnotesize
\begin{boxedminipage}{\marginparwidth}#1\end{boxedminipage}
}}
\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}
\begin{document}
\tableofcontents
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}
\end{document}
It should be possible to continue single-column on the same page, after "multi", but the headers must be kept like when the page was started within the "multi" environment.
Why would I need single-column after multi-column on the same page with a marginpar? Imagine presenting the source code for the article, with small hints on the margin. (That's what the listing package is there for)
I suspect your last heading box is being constructed after your text finishes making the multicol boxes, so you're out of the scope of your change. It goes back to the old value.
You'd probably do well to add the fancyhdr package and use it. I believe it's well-behaved in multicolumn.
Okay, so it's almost certainly the scope thing. You're doing the adjustwidth in your new multi environment. When your text runs out in the multi envirnment, you haven't filled the last page; headers aren't set up until the page is filled. So your mutlti environment finishes the box, you leave the scope, and THEN the page is finished and emitted. Using the old width.
Set the header width and parameters outside the environment.
I ran your test document. It seems to have a bug in that \newlength{\newtextwidth} has a global effect, and so causes an error. Not sure why that is but I pulled it out of the \newenvironment{multi} with no ill effect.
Charlie's diagnosis is definitely correct. An alternative solution is to end the page after the multicols but before the adjustwidth, thus:
\newenvironment{multi}[1]{%
...}
{\end{multicols}\vfill\break\end{adjustwidth}}
I have tested this solution and on your sample document, it produces good output.

Resources