将短关键词移至框中文本的左侧,而不是将边距/边注移至左侧

将短关键词移至框中文本的左侧,而不是将边距/边注移至左侧

我正在尝试创建一个命令,将(短)关键字移至文本的左侧。它们应该“右对齐”,关键字和文本之间应有固定的间距。

下面的命令可以完成我想要的操作,但前提是文本是否缩进 - 而不是组合,例如在新部分开始之后。

我可以检查注释是否在缩进段落中\hspace{\parindent}并有条件地发出吗?或者有更好的方法吗?我不想为此 使用marginnote包(或一般来说)。marginpar

\documentclass{scrartcl}

\newcommand{\parnote}[1]{%
\begingroup
\setlength{\fboxsep}{0pt}
    \hspace*{0pt}\llap{%
        \framebox[2cm][r]{% normally use makebox
            #1%
%           \hspace{\parindent}%
            \hspace{8pt}%
        }%
    }%
\endgroup
\ignorespaces
}

\begin{document}

\section{Dummy}

\parnote{Keyword 1} This paragraph has no indent.

\bigskip

\parnote{Other Word} This paragraph has an indent.

\end{document}

在此处输入图片描述

答案1

包装tabto非常适合这种事情。最棒的是,可以\tabto随时发出,甚至在线路中途也可以。这里我演示了比 更靠左的盒子,但可以通过将设置为 -2cm 而不是 -1 英寸来\llap使其类似。\tabto

\documentclass{scrartcl}
\usepackage{tabto}
\newcommand\mnote[1]{\tabto*{-1in}\framebox[2cm][r]{#1 }\tabto{\TabPrevPos}}
\begin{document}
\section{Dummy}
this is a test\mnote{item}. continue\ldots

\bigskip

And now\mnote{item 2}, for another test.
\end{document}

在此处输入图片描述

答案2

这是一个使用选项zref模块savepos将框与左边距对齐。一些指导来自我想将下一行缩进指定的位置

在此处输入图片描述

\documentclass{scrartcl}
\usepackage{zref-savepos}
\makeatletter
% \zsaveposx is defined since 2011/12/05 v2.23 of zref-savepos
\@ifundefined{zsaveposx}{\let\zsaveposx\zsavepos}{}
\newcounter{hposcnt}
\renewcommand*{\thehposcnt}{hpos\number\value{hposcnt}}
\newcommand*{\parnote}[1]{% \parnote{<stuff>}
  \leavevmode%
  \stepcounter{hposcnt}%
  \zsaveposx{\thehposcnt}%
  \zref@refused{\thehposcnt}%
  \kern\dimexpr-\zposx{\thehposcnt}sp+1in+\oddsidemargin\relax%
  {\setlength{\fboxsep}{0pt}%
   \llap{\framebox[3cm][r]{\strut#1\hspace{8pt}}}}%
  \kern\dimexpr-1in-\oddsidemargin+\zposx{\thehposcnt}sp\relax%
  \ignorespaces
}
\makeatother

\begin{document}

\section{Dummy}


\parnote{Keyword 1} This paragraph has no indent.

\bigskip

\parnote{Other Word} This paragraph has an indent.

\bigskip

\noindent\parnote{Final word} This paragraph has an indent.

\end{document}

由于zref使用“标签”来识别位置,这需要至少两次编译直到引用稳定下来。

相关内容