我想创建一个自定义命令,允许我从当前位置到文本区域的右侧绘制一条线。这与类似,\noindent\rule{\linewidth}{0.1pt}
只是线宽在规则到达文本区域的右侧之前确定
\documentclass[a4paper]{book}
\usepackage{calc}
\newlength{\widthWidest}
\setlength{\widthWidest}{\widthof{Text }}
\usepackage{geometry}
% BEGIN_FOLD
\geometry{twoside=false, showframe=true}
\geometry{inner=10mm, outer=10mm, includemp=false}
% END_FOLD
\usepackage{tikz}
\newcommand{\ruletoright}[1]{%
\tikz[] {%
%
\draw [color=red, line width=#1]
(0, 0)
--
(\dimexpr \textwidth - \widthWidest + 1pt \relax, 0);
%
}
}
\begin{document}
\noindent%
\smash{\rlap{\rule{\linewidth}{0.1pt}}}%
Text \ruletoright{0.1pt}
\end{document}
答案1
只是 TeX。
\documentclass[a4paper]{book}
\usepackage{geometry}
\usepackage{xcolor}
\geometry{
a6paper,% just to have a smaller picture
twoside=false,
showframe=true,
inner=10mm,
outer=10mm,
includemp=false
}
\newcommand{\ruletoright}[1]{%
\leavevmode
\begingroup
\color{red}%
\leaders\hrule height #1\hfill\null
\endgroup
}
\begin{document}
\noindent
Text\ruletoright{1pt}% to better see it
\noindent
Other text.
\end{document}
答案2
如果您不需要特殊线条,@egreg 的非 tikz 解决方案可能是最好的。如果您确实需要特殊线条,这里有一个tikz
解决方案。
该命令\ruletoright[<tikz options>]
可以放置在文档中的任何位置(甚至是一行的中间),并将使用current page text area
包提供的节点绘制所需的线条tikzpagenodes
。
选项包括颜色、线条样式、粗细等。您还可以包含具有不同样式的多条线条(使用 shift)。
您必须编译两次。
\documentclass{article}
\usepackage{tikz, lipsum}
\usepackage{tikzpagenodes}
\newcommand{\ruletoright}[1][]{\tikz[remember picture, overlay, #1]
{\node(A){};\draw(A.center)--(A-|current page text area.east);}}
\begin{document}
\noindent\lipsum[1][1]\ruletoright[red, very thick]\ruletoright[red, very thick]
\noindent\lipsum[1][5]\ruletoright[blue, thick, dashed, yshift=1mm]
\noindent\lipsum[1][6]\ruletoright[blue, semithick, yshift=1mm]\ruletoright[red, semithick]
\noindent\lipsum[1][3]\ruletoright[orange, very thick] \lipsum[1][4]\ruletoright[yshift=.5ex, thick, ->]
\end{document}