2

In the code below, the rulers are positioned where I want them to be, that is 19pt to the left/above the body. But I would like 0, on each of the h and v rulers, to coincide with the top-left corner of the body. \fgrulerstartnumh{-19pt} seemed like the way to do it, but it only accepts positive integers. OTOH, if I use the []commented[-out] \usepackage instruction, I get the second requirement, but not the first. Is there a way out of this dilemma?

\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[type=none]{fgruler}
%\usepackage[type=upperleftT,unit=in]{fgruler}
\usepackage{xparse}

%https://tex.stackexchange.com/questions/588521/shifting-the-starting-number-of-a-ruler-such-that-0-aligns-with-the-top-left-cor

\ExplSyntaxOn

\makeatletter
% Adapted from:
% https://tex.stackexchange.com/questions/201488/how-to-get-the-active-left-and-right-margins-to-use-them-in-a-tikzpicture
\dim_new:N \erw_Gmlmargin_dim
\dim_set:Nn \erw_Gmlmargin_dim{\dimexpr\Gm@lmargin}
\dim_new:N \erw_Gmtmargin_dim
\dim_set:Nn \erw_Gmtmargin_dim{\dimexpr\Gm@tmargin}
\makeatother

\ExplSyntaxOff

\begin{document}
\ExplSyntaxOn
\noindent
\verb|\erw_Gmlmargin_dim|~
\dim_use:N\erw_Gmlmargin_dim;~
\verb|\erw_Gmtmargin_dim|:~\dim_use:N\erw_Gmtmargin_dim.\par
%\dim_new:N \erw_hstart_dim
%\dim_set:Nn\erw_hstart_dim{\dim_eval:n{-1 * 19pt}} % ERROR 
\dim_zero_new:N \erw_hstart_dim
\dim_sub:Nn\erw_hstart_dim{19pt} % Workaround
\noindent{}\verb|\erw_hstart_dim|~\dim_use:N\erw_hstart_dim;~
\dim_zero_new:N \erw_vstart_dim
\dim_sub:Nn\erw_vstart_dim{19pt} 
\noindent{}\verb|\erw_vstart_dim|~\dim_use:N\erw_vstart_dim.\par

\dim_new:N \erw_hshift_dim
\dim_set:Nn \erw_hshift_dim{\erw_Gmlmargin_dim}
\dim_add:Nn \erw_hshift_dim{\erw_hstart_dim}
\noindent{}\verb|\erw_hshift_dim|~\dim_use:N\erw_hshift_dim;~
\dim_new:N \erw_vshift_dim
\dim_set:Nn \erw_vshift_dim{\erw_Gmtmargin_dim}
\dim_add:Nn \erw_vshift_dim{\erw_hstart_dim}
\noindent{}\verb|\erw_vshift_dim|~\dim_use:N\erw_vshift_dim;~

% \fgrulerstartnumh{\erw_hstart_dim}
% \fgrulerstartnum{〈num〉}
% The〈num〉is a nonnegative integer, which will be the starting number on the horizontal and verticalrulers. Default:\fgrulerstartnum{0}

\fgruler[in]{upperleft}
{\erw_hshift_dim}
{\erw_vshift_dim}

\ExplSyntaxOff

\end{document}

enter image description here

1
  • 2
    Insisting that you should use proper naming conventions seems pretty useless.
    – egreg
    Mar 22 at 22:25
1

Maybe that's right for you:

\documentclass{article}
\usepackage{lipsum}
\usepackage[type=user,unit=in,showframe,color=red]{fgruler}
\fgrulerdefuserin{
    \rulerparamsfromfg
    \AtTextLowerLeft{%
        \rulernorotatenum
        \fgrulercaptionin{}
        \hspace{-5pt}\llap{\ruler[in]{downright}{\textheight}}}
    \AtTextUpperLeft{%
        \lower-5pt\hbox{\ruler[in]{rightdown}{\textwidth}}}}
\begin{document}
\lipsum
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.