Tabto 在右边距跳转时插入换行符

Tabto 在右边距跳转时插入换行符

我想使用tabto在文档边缘插入符号。我按照以下 MWE 执行了此操作:

\documentclass[11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{tabto, calc}
%   \def\marginsymbol{\protect\marginsymbolhelper}
%   \def\marginsymbolhelper{\tabto*{-1ex}\makebox[0cm]{$\bullet$}\tabto*{\TabPrevPos}}
%   The following works, too:
    \newcommand{\marginsymbol}{\tabto*{-3.5ex}{%
    \begin{tikzpicture}[remember picture, overlay 
        ]%
        \node[circle, fill=pink] at (0, 0) {\textcolor{white!90!pink}{\LARGE\textbf{i}}};
        \end{tikzpicture}
    }%
    \tabto*{\TabPrevPos}}%
    \newcommand{\marginsig}{\tabto*{\textwidth + 3.5ex}{%
        \begin{tikzpicture}[remember picture, overlay 
        ]%
        \node[circle, fill=pink] at (0, 0) {\textcolor{white!90!pink}{\LARGE\textbf{i}}};
        \end{tikzpicture}       
        }%
        \tabto*{\TabPrevPos}
        }%


\begin{document}
\section{Eins}
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum\marginsymbol  
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser\marginsig Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum

\end{document}

右边距中的符号 (\marginsig) 导致文本继续在正确的位置,但在下一行。此问题与使用 tikzpicture 环境或 tikz 无关。我该如何修复此问题?

答案1

有几种方法可以将材料打印到页边距中。就您而言,您似乎想要打印到左侧和右侧页边距中。由于您已经在使用 KOMA-Script 类,因此建议使用 KOMA-Script 包scrlayer-notecolumn,该包提供了多个注释列的用法:

\documentclass{scrartcl}% 11pt is the default and therefore not needed
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{scrlayer-scrpage,scrlayer-notecolumn}
\DeclareRobustCommand*{\marginsymbol}{%
  \begin{tikzpicture}
    \node[circle, fill=pink] at (0, 0) {\textcolor{white!90!pink}{\LARGE\textbf{i}}};
  \end{tikzpicture}
}%
\DeclareNewNoteColumn[reversemarginpar]{reversemarginpar}
\NewDocumentCommand{\marginsign}{s}
{%
  \IfBooleanTF{#1}%
    {\makenote[reversemarginpar]{\raggedleft\marginsymbol}}%
    {\makenote{\marginsymbol}}%
}
\begin{document}
\section{Eins}
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum\marginsign*
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser\marginsign{} Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
\end{document}

经过两次 LaTeX 运行后,您将获得:

使用 scrlayer-scrpage 标记左右边距

但说句公道话:您不需要额外的包,您只需使用\marginpar一个技巧就可以到达左边距:

\documentclass{scrartcl}% 11pt is the default and therefore not needed
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{lipsum}
%\usepackage{scrlayer-scrpage,scrlayer-notecolumn}
\DeclareRobustCommand*{\marginsymbol}{%
  \begin{tikzpicture}
    \node[circle, fill=pink] at (0, 0) {\textcolor{white!90!pink}{\LARGE\textbf{i}}};
  \end{tikzpicture}
}%
%\DeclareNewNoteColumn[reversemarginpar]{reversemarginpar}
\NewDocumentCommand{\marginsign}{s}
{%
  \IfBooleanTF{#1}%
    {\marginpar{\makebox[0pt][l]{\hspace*{-\dimexpr\textwidth+2\marginparsep}\raisebox{-\ht\strutbox}{\makebox[0pt][r]{\marginsymbol}}}}}%
    {\marginpar{\raisebox{-\ht\strutbox}{\marginsymbol}}}%
}
\begin{document}
\section{Eins}
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum\marginsign*
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser\marginsign{} Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum Dieser Text ist nicht Lorem Ipsum
\end{document}

左右边距标记用 \marginpar

相关内容