答案1
我想提出以下方法,引入\WriteOnMargin
部分基于 TikZ 的命令。
更新(twoside
可选)
如果偶数页和奇数页发挥作用(例如,作为twoside
选项),则可以通过测试指定偶数/奇数页的设置\ifodd
以获得以下输出。
上述示例的完整代码如下。
\documentclass[twoside]{article}
\usepackage{tikz}
\def\WriteOnMargin#1{%
%
% page parity test
%-----------------
\ifodd\thepage
%
% odd-page setup
%---------------
\def\EOwhere{above right}
\def\EOxshift{1em}
\relax
\else
%
% even-page setup
%----------------
\def\EOwhere{below right}
\def\EOxshift{9em}
\relax
\fi
%
% apply settings and typeset the text
%------------------------------------
\marginpar{%
\tikz[overlay]
\node[%
cyan,
\EOwhere,
xshift=\EOxshift,
rotate=-90,
font=\Huge\sffamily] {#1};
}%
}
\begin{document}
\WriteOnMargin{abcd}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean vel massa quis mauris
vehicula lacinia. Duis risus. Sed elit dui, pellentesque a, faucibus vel, interdum nec,
diam. Nulla est. Maecenas aliquet accumsan leo. Mauris metus. Cum sociis natoque
penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum fermentum
tortor id mi. Fusce aliquam vestibulum ipsum. Mauris dictum facilisis augue. Pellentesque
sapien. Pellentesque arcu. In dapibus augue non sapien. Nulla non arcu lacinia neque
faucibus fringilla.
\newpage
\WriteOnMargin{xyz}
Curabitur ligula sapien, pulvinar a vestibulum quis, facilisis vel sapien. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Integer in sapien. Nulla pulvinar eleifend sem. Nullam lectus justo, vulputate
eget mollis sed, tempor sed magna. Aliquam erat volutpat. Neque porro quisquam est, qui
dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius
modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Maecenas
sollicitudin. Nullam dapibus fermentum ipsum. Aliquam id dolor. Nulla non arcu lacinia
neque faucibus fringilla. Integer imperdiet lectus quis justo. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean id metus
id velit ullamcorper pulvinar. Nullam sapien sem, ornare ac, nonummy non, lobortis a
enim.
\end{document}
原始帖子(无twoside
选项)
\documentclass{article}
\usepackage{tikz}
\def\WriteOnMargin#1{%
\marginpar{%
\tikz[overlay]
\node[%
cyan,
above right,
xshift=1em,
rotate=-90,
font=\Huge\sffamily] {#1};
}%
}
\begin{document}
\WriteOnMargin{Some text}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean vel massa quis mauris
vehicula lacinia. Duis risus. Sed elit dui, pellentesque a, faucibus vel, interdum nec,
diam. Nulla est. Maecenas aliquet accumsan leo. Mauris metus. Cum sociis natoque
penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum fermentum
tortor id mi. Fusce aliquam vestibulum ipsum. Mauris dictum facilisis augue. Pellentesque
sapien. Pellentesque arcu. In dapibus augue non sapien. Nulla non arcu lacinia neque
faucibus fringilla.
Curabitur ligula sapien, pulvinar a vestibulum quis, facilisis vel sapien. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Integer in sapien. Nulla pulvinar eleifend sem. Nullam lectus justo, vulputate
eget mollis sed, tempor sed magna. Aliquam erat volutpat. Neque porro quisquam est, qui
dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius
modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Maecenas
sollicitudin. Nullam dapibus fermentum ipsum. Aliquam id dolor. Nulla non arcu lacinia
neque faucibus fringilla. Integer imperdiet lectus quis justo. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean id metus
id velit ullamcorper pulvinar. Nullam sapien sem, ornare ac, nonummy non, lobortis a
enim.
\end{document}
答案2
\InsertBoxR
使用来自纯 TeX 宏包的命令可以实现简单的解决方案insbox
。它需要两个强制参数:插入框之前段落中未缩短的行数和框的内容,以及一个可选(最后一个)参数:补充缩短的行数,以防 TeX 错误地计算了必要的缩短行数。
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{adjustbox, rotating}%
\input{insbox}
\makeatletter
\@InsertBoxMargin =15pt
\makeatother
\begin{document}
\sffamily
\InsertBoxR{-1}{\turnbox{-90}{\adjustbox{scale=4}{Vertical text}}}[16]
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mau-
ris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus
et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus
sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit
amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra
ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi
dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper
nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
\lipsum[2]
\end{document}
答案3
解决方案是在正确位置使用 wraptable 和 \hfill 的组合
\begin{wraptable}{r}{0.5cm}
\hfill\begin{tabular}{l}
\begin{turn}{270}
\begingroup{}
\Huge{Vertical Text}
\endgroup{}
\end{turn}
\end{tabular}
\end{wraptable}