0

I am not an expert on Latex, which is the reason I have used a template for my CV. Now I am struggling centering my list item text (left-to-right or justified) as outlined by the picture below.

There are two solutions I am looking for:

  • One: Align my list items justified (left-to-right) (as depicted by 1 in the picture below)
  • Two: Align the entire list in the center, with my list items justified (having the same distance as (2) in both right and left of my page)

Note: This snippet of code doesn't describe the entire content of the picture, which was done in order to prevent cluttered code on my post. Since I have used a template, I would expect you to ask for more information.

%% Used here mainly to get the effect of a shorter line under Projects
\columnratio{.9}

\begin{paracol}{2} \cvsection{Projects}

\cvevent{Game Engine in C++ & Lua - Blink}{Personal}{in progress}{} \begin{itemize}

\item Used \textbf{spdlog} for my custom Logging System, which supports both the Game Engine Library and the Sandbox Application. Designed an Event System, described by a dispatcher which support keyboard, application and mouse events. Moreover, I have added an Input Polling System that queries client's actions and acts appropriately.

\item Architected a simple platform agnostic RenderAPI wrapper that currently supports OpenGL calls, but in the future will hopefully handle Vulkan and DirectX12 as well. Used \textbf{glm} as my OpenGL Mathematics Library since it complies with the column-major specification.

\item \textbf{Other}: Created Vertex Buffer Layouts, Shaders, Materials, Orthographic Cameras

\end{itemize}

\end{paracol}

*EDIT:

%%%%%%%%%%%%%%%%%
% This is altacv.cls (v1.3.2, 17 May 2020) written by
% LianTze Lim (liantze@gmail.com).
%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%%
% Contributions:
% - https://github.com/akreuzer Added ragged2e option (5 Nov 2018)
% - https://github.com/stefanogermano Fixed bad boxes and undefined font shape (July 2018)
% - https://github.com/foohyfooh Fixed blank spaces in \cvevent and bad link in README.md (June 2018)

%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{altacv}[2020/05/17 AltaCV v1.3.2, yet another alternative class for a resume/curriculum vitae.]

%% v1.1: Optionally load academicons \newif\if@academicons \DeclareOption{academicons}{@academiconstrue} %% v1.1.3: Choice of round/square photo \newif\if@normalphoto \DeclareOption{normalphoto}{@normalphototrue} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}} \newif\if@raggedtwoe \DeclareOption{ragged2e}{@raggedtwoetrue} %% v1.3: load hyperref for clickable hyperlinks \newif\if@withhyper \DeclareOption{withhyper}{@withhypertrue} \ProcessOptions\relax

\LoadClass{article} %% v1.3.2 Hopefully this helps make the PDF %% file more 'friendly' with copy-paste etc \RequirePackage[a-1b]{pdfx} \RequirePackage[margin=2cm]{geometry} \RequirePackage[fixed]{fontawesome5} \RequirePackage{ifxetex,ifluatex} \RequirePackage{scrlfile} \RequirePackage{xparse}

%% v1.1.5: added for convenience \newif\ifxetexorluatex \ifxetex \xetexorluatextrue \else \ifluatex \xetexorluatextrue \else \xetexorluatexfalse \fi \fi

\ifxetexorluatex \RequirePackage{fontspec} \else %% v1.3.2 attempts to make ligatures %% copy-paste as normal characters \RequirePackage{cmap} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} \input{glyphtounicode} \pdfglyphtounicode{f_f}{FB00} \pdfglyphtounicode{f_f_i}{FB03} \pdfglyphtounicode{f_f_l}{FB04} \pdfglyphtounicode{f_i}{FB01} \pdfgentounicode=1 \fi

%% v1.1: Optionally load academicons %% v1.1.5: Handle different versions of academicons \if@academicons \ifxetexorluatex \RequirePackage{fontspec} %% academicons in TL2018 doesn't require %% Academicons to be installed in OS fonts %% so can be loaded directly @ifl@t@r\fmtversion{2018/04/01}{% \RequirePackage{academicons} }{% % TL2017 @ifl@t@r\fmtversion{2017/04/01}{% @ifpackagelater{academicons}{2018/03/01}{% \RequirePackage{academicons} }{% \let\ori@newfontfamily\newfontfamily% \renewcommand{\newfontfamily}[2]{} \RequirePackage{academicons} \let\newfontfamily\ori@newfontfamily \newfontfamily{\AI}{academicons.ttf} } }{% TL2016 requires the package to be loaded before % the version can be checked. Only added because % Overleaf v1 still runs TL2016; will be removed % when v1 is completely retired. \let\ori@newfontfamily\newfontfamily% \renewcommand{\newfontfamily}[2]{} \RequirePackage{academicons} \let\newfontfamily\ori@newfontfamily \newfontfamily{\AI}{academicons.ttf} } } \else \ClassError{AltaCV}{academicons unsupported by latex or pdflatex. Please compile with xelatex or lualatex}{Please compile with xelatex or lualatex to use the academicons option} \fi \fi

\if@raggedtwoe \RequirePackage[newcommands]{ragged2e} \fi

\if@withhyper \AtBeginDocument{% \RequirePackage{hyperref} \hypersetup{hidelinks} \urlstyle{same} } \fi

\RequirePackage{xcolor}

\colorlet{accent}{blue!70!black} \colorlet{emphasis}{black} \colorlet{heading}{black} \colorlet{headingrule}{black} \colorlet{subheading}{emphasis} \colorlet{body}{black!80!white} \colorlet{name}{heading} \colorlet{tagline}{accent} \newcommand{\itemmarker}{{\small\textbullet}} \newcommand{\ratingmarker}{\faCircle}

\RequirePackage{tikz} \usetikzlibrary{arrows} \RequirePackage[skins]{tcolorbox} \RequirePackage[inline]{enumitem} \setlist{leftmargin=*,labelsep=0.5em,nosep,itemsep=0.25\baselineskip,after=\vspace{0.25\baselineskip}} \setlist[itemize]{label=\itemmarker} \RequirePackage{graphicx} \RequirePackage{etoolbox} \RequirePackage{dashrule} \RequirePackage{multirow,tabularx} \RequirePackage{changepage} % \RequirePackage{marginfix}

\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}}

%% v1.3.1 \detokenize will break UTF-8 in pdflatex %% Using alternative from https://tex.stackexchange.com/a/530911/226 \newcommand{\utffriendlydetokenize}[1]{% \scantokens{% \catcode\_=12% % \catcode^=12% % \catcode\{=12% % \catcode}=12% \catcode\&=12% \catcode$=12% \catcode\#=12% \catcode~=12% % \catcode`\=12% {#1}% }% } %% v1.3: Incorporating hyperlinks %% v1.3.1: using \unfriendlydetokenize to avoid %% breaking unicode \ExplSyntaxOn \NewDocumentCommand{\printinfo}{m m o}{% \IfNoValueTF{#3}{% \mbox{\textcolor{accent}{\normalfont #1}~\utffriendlydetokenize{#2}\hspace{2em}}% }{% \if@withhyper% \mbox{\textcolor{accent}{\normalfont #1}~ \href{#3}{\utffriendlydetokenize{#2}}\hspace{2em}} \else% \ClassWarning{Please specify [withhyper] option to enable hyperlinks. Printing out full hyperlink prefix #1 for now.}% \mbox{\textcolor{accent}{\normalfont #1}~{\utffriendlydetokenize{#3#2}}\hspace{2em}}% \fi% }% }%

%% v1.3: Exploring convenient creation of fields \NewDocumentCommand{\NewInfoField}{m m o}{% \IfNoValueF{#3}{\csdef{#1 hyperprefix}{#3}}% \csdef{#1 symbol}{#2}% \csdef{#1}##1{% \if@withhyper \IfNoValueTF {#3} {\printinfo{\csuse{#1 symbol}}{##1}}% {\printinfo{\csuse{#1 symbol}}{##1}[\csuse{#1 hyperprefix}##1]}% \else \printinfo{\csuse{#1 symbol}}{##1}% \fi% } } \ExplSyntaxOff

\newcommand{\name}[1]{\def@name{#1}} \newcommand{\tagline}[1]{\def@tagline{#1}} \newcommand{\personalinfo}[1]{\def@personalinfo{#1}} \NewInfoField{email}{\faAt}[mailto:] \NewInfoField{mailaddress}{\faEnvelope} \NewInfoField{phone}{\faPhone} \NewInfoField{homepage}{\faGlobe}[https://] \NewInfoField{twitter}{\faTwitter}[https://twitter.com/] \NewInfoField{linkedin}{\faLinkedin}[https://linkedin.com/in/] \NewInfoField{github}{\faGithub}[https://github.com/] \NewInfoField{orcid}{\aiOrcid}[https://orcid.com/] \NewInfoField{location}{\faMapMarker}

% v1.2: Support for multiple photos \newlength{\altacv@photos@width} \newlength{\altacv@photo@diam@left} \newlength{\altacv@photo@diam@right} \def\altacv@left@photos{} \def\altacv@right@photos{}

\newcommand{@makeaphoto}[2]{% \begin{minipage}{#1}% \if@normalphoto \includegraphics[width=\linewidth]{#2} \else \tikz\path[fill overzoom image={#2}]circle[radius=0.5\linewidth]; \fi% \end{minipage}% }

\newcommand{\altacv@add@photo@left}[1]{% \appto{\altacv@left@photos}{% @makeaphoto{\altacv@photo@diam@left}{#1}\hspace{1ex}% }% \addtolength{\altacv@photos@width}{\altacv@photo@diam@left}% \addtolength{\altacv@photos@width}{1ex}% } \newcommand{\altacv@add@photo@right}[1]{% \appto{\altacv@right@photos}{% @makeaphoto{\altacv@photo@diam@right}{#1}\hspace{1ex}% }% \addtolength{\altacv@photos@width}{\altacv@photo@diam@right}% \addtolength{\altacv@photos@width}{1ex}% } \newcommand{\photoL}[2]{% \setlength{\altacv@photo@diam@left}{#1}% \forcsvlist{\altacv@add@photo@left}{#2}% } \newcommand{\photoR}[2]{% \setlength{\altacv@photo@diam@right}{#1}% \forcsvlist{\altacv@add@photo@right}{#2}% } \let\photo\photoR

\newcommand{\namefont}{\Huge\bfseries} \newcommand{\taglinefont}{\large\bfseries} \newcommand{\personalinfofont}{\footnotesize\bfseries} \newcommand{\cvsectionfont}{\LARGE\bfseries} \newcommand{\cvsubsectionfont}{\large\bfseries}

\newcommand{\makecvheader}{% \begingroup \altacv@left@photos\hfill% \begin{minipage}{\dimexpr\linewidth-\altacv@photos@width}% \raggedright% {\namefont\color{name}\MakeUppercase{@name}\par} \medskip {\taglinefont\color{tagline}@tagline\par} \medskip {\personalinfofont@personalinfo\par} \end{minipage}\hfill% \altacv@right@photos\par%

\endgroup\medskip }

\renewenvironment{quote}{\color{accent}\itshape\large}{\par}

\newcommand{\cvsection}[2][]{% \bigskip% \ifstrequal{#1}{}{}{\marginpar{\vspace*{\dimexpr1pt-\baselineskip}\raggedright\input{#1}}}% {\color{heading}\cvsectionfont\MakeUppercase{#2}}\[-1ex]% {\color{headingrule}\rule{\linewidth}{2pt}\par}\medskip }

\newcommand{\cvsubsection}[1]{% \smallskip% {\color{subheading}\cvsubsectionfont{#1}\par}\medskip }

% v1.1.4: fixes inconsistent font size \newcommand{\cvevent}[4]{% {\large\color{emphasis}#1\par} \smallskip\normalsize \ifstrequal{#2}{}{}{ \textbf{\color{accent}#2}\par \smallskip} \ifstrequal{#3}{}{}{{\small\makebox[0.5\linewidth][l]{ \faCalendar ~#3}}}% \ifstrequal{#4}{}{}{{\small\makebox[0.5\linewidth][l]{~#4}}}\par \medskip\normalsize }

\newcommand{\cvachievement}[3]{% \begin{tabularx}{\linewidth}{@{}p{2em} @{\hspace{1ex}} >{\raggedright\arraybackslash}X@{}} \multirow{2}{*}{\Large\color{accent}#1} & \bfseries\textcolor{emphasis}{#2}\ & #3 \end{tabularx}% \smallskip }

\newcommand{\cvtag}[1]{% \tikz[baseline]\node[anchor=base,draw=body!30,rounded corners,inner xsep=1ex,inner ysep =0.75ex,text height=1.5ex,text depth=.25ex]{#1}; }

\newcommand{\cvskill}[2]{% \textcolor{emphasis}{\textbf{#1}}\hfill \foreach \x in {1,...,5}{% \space{\ifnumgreater{\x}{#2}{\color{body!30}}{\color{accent}}\ratingmarker}}\par% }

% Adapted from @Jake's answer at http://tex.stackexchange.com/a/82729/226 \newcommand{\wheelchart}[4][0]{% \begingroup\centering \def\innerradius{#3}% \def\outerradius{#2}% % Calculate total \pgfmathsetmacro{\totalnum}{0}% \foreach \value/\colour/\name in {#4} {% \pgfmathparse{\value+\totalnum}% \global\let\totalnum=\pgfmathresult% }% \begin{tikzpicture}

  % Calculate the thickness and the middle line of the wheel
  \pgfmathsetmacro{\wheelwidth}{\outerradius-\innerradius}
  \pgfmathsetmacro{\midradius}{(\outerradius+\innerradius)/2}
  \pgfmathsetmacro{\totalrot}{-90 + #1}

  % Rotate so we start from the top
  \begin{scope}[rotate=\totalrot]

  % Loop through each value set. \cumnum keeps track of where we are in the wheel
  \pgfmathsetmacro{\cumnum}{0}
  \foreach \value/\width/\colour/\name in {#4} {
        \pgfmathsetmacro{\newcumnum}{\cumnum + \value/\totalnum*360}

        % Calculate the percent value
        \pgfmathsetmacro{\percentage}{\value/\totalnum*100}
        % Calculate the mid angle of the colour segments to place the labels
        \pgfmathsetmacro{\midangle}{-(\cumnum+\newcumnum)/2}

        % This is necessary for the labels to align nicely
        \pgfmathparse{
           (-\midangle>180?"west":"east")
        } \edef\textanchor{\pgfmathresult}
        \pgfmathparse{
           (-\midangle>180?"flush left":"flush right")
        } \edef\textalign{\pgfmathresult}
        \pgfmathsetmacro\labelshiftdir{1-2*(-\midangle<180)}

        % Draw the color segments. Somehow, the \midrow units got lost, so we add 'pt' at the end. Not nice...
        \filldraw[draw=white,fill=\colour] (-\cumnum:\outerradius) arc (-\cumnum:-(\newcumnum):\outerradius) --
        (-\newcumnum:\innerradius) arc (-\newcumnum:-(\cumnum):\innerradius) -- cycle;

        % Draw the data labels
        \draw  [*-,thin,emphasis] node [append after command={(\midangle:\midradius pt) -- (\midangle:\outerradius + 1ex) -- (\tikzlastnode)}] at (\midangle:\outerradius + 1ex) [xshift=\labelshiftdir*0.5cm,inner sep=1ex, outer sep=0pt, text width=\width,anchor=\textanchor,align=\textalign,font=\small,text=body]{\name};
        % Set the old cumulated angle to the new value
        \global\let\cumnum=\newcumnum
    }
  \end{scope}

% \draw[gray] (0,0) circle (\outerradius) circle (\innerradius); \end{tikzpicture}\par \endgroup }

\newcommand{\cvref}[3]{% \smallskip \textcolor{emphasis}{\textbf{#1}}\par \begin{description}[font=\color{accent},style=multiline,leftmargin=1.35em,align=left] \item[\small\normalfont\emailsymbol] #2 \item[\small\normalfont\mailaddresssymbol] #3 \end{description} % \medskip }

\newenvironment{cvcolumn}[1]{\begin{minipage}[t]{#1}\raggedright}{\end{minipage}}

\RequirePackage[style=apa6,sorting=ydnt]{biblatex} %% For removing numbering entirely when using a numeric style % \setlength{\bibhang}{1em} % \DeclareFieldFormat{labelnumberwidth}{\makebox[\bibhang][l]{\itemmarker}} % \setlength{\biblabelsep}{0pt} \defbibheading{pubtype}{\cvsubsection{#1}} \renewcommand{\bibsetup}{\vspace*{-\baselineskip}} \setlength{\bibhang}{1em} \AtEveryBibitem{\makebox[\bibhang][l]{\itemmarker}} \setlength{\bibitemsep}{0.25\baselineskip}

% v1.1.2: make it easier to add a sidebar aligned with top of next page \RequirePackage{afterpage} \newcommand{\addsidebar}[2][]{\marginpar{% \ifstrequal{#1}{}{}{\vspace*{#1}}% \input{#2}}% } \newcommand{\addnextpagesidebar}[2][]{\afterpage{\addsidebar[#1]{#2}}}

\AtBeginDocument{% \pagestyle{empty} \color{body} \raggedright }

enter image description here

newbie99
  • 103
  • please post code as a complete test document that people can use to see the issue and test answers you have posted a fragment using non standard commands and no indication of their definition which makes it very hard to comment. – David Carlisle Jul 07 '21 at 19:16
  • 1
    latex justifies text, including list items, by default so somewhere in code not shown you seem to have specified \raggedright but without seeing the code not much help can be given other than say don't use \raggedright. – David Carlisle Jul 07 '21 at 19:18
  • I will post the .cls of my document in a moment, thanks for pointing that out! – newbie99 Jul 07 '21 at 19:19
  • Apparently I have deleted \raggedright from almost the last line of the edit and it worked. Thanks! – newbie99 Jul 07 '21 at 19:24

1 Answers1

1

The image shows that the text is set \raggedright so you should be able to modify the class not to use that, and use the default justified setting.

David Carlisle
  • 757,742