我在创建自定义类时遇到问题。
目标
我正在编写一个自定义类作为 Dune 棋盘游戏的派系表模板。其中一个官方表(因此也是我想要的外观)如下: 正如您在左上角图片附近看到的,文字完美地环绕在派系徽标周围。我想实现同样的效果。
我的解决方案
这里你会发现我现在的班级取得了相当令人满意的成绩。这 类的实现中,你可以看到一些问题。在第 12、14 和 16 行中,你可以看到水平空间的手动设置,这样文本就不会与图像重叠。该文档的输出如下 虽然结果还不错,但不如原来那么顺利。
我认为问题出在哪里
在类文件中你会发现以下内容
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{%
\begin{tikzpicture}[remember picture, overlay]
\filldraw[fill=FT@maincolor, draw=FT@maincolor!80]
([yshift=1.5cm,xshift=1cm]current page text area.north west) rectangle
([yshift=0.4cm]current page text area.north east);
%
\node at ([yshift=-1.65cm]current page.north)
{\color{white}\bfseries\LARGE\MakeUppercase{\textsf{\FT@name}}};
\node at ([xshift=1.5cm]current page text area.north west)
{\includegraphics[width=4cm]{\FT@logo}};
\end{tikzpicture}
}
我将派系徽标放在文档的页眉中,但似乎找不到自动环绕文本的方法。所以我的问题是:如何实现每页的文本环绕?现在我必须在每页的第一列上添加一些间距,这可能会有点烦人,而且肯定不可扩展。
谢谢你的时间。
答案1
以下使用\everypar
和\afterpage
适用\parshape
于每页的第一段。它可能与 的其他用途不兼容\everypar
。这些通常可以根据具体情况进行修复。
\documentclass{article}
\usepackage{afterpage}
\usepackage{lipsum}% MWE only
\makeatletter
\newcommand{\AtBeginPage}{\if@firstcolumn
\global\everypar{\parshape=5
2em \dimexpr \columnwidth-2em\relax
1.5em \dimexpr \columnwidth-1.5em\relax
1em \dimexpr \columnwidth-1em\relax
0.5em \dimexpr \columnwidth-0.5em\relax
0pt \columnwidth
\global\everypar{}}\fi
\afterpage{\AtBeginPage}}
\makeatother
\begin{document}
\AtBeginPage
\noindent\LipsumPar{1}
\LipsumPar{2}
\LipsumPar{3}
\LipsumPar{4}
\LipsumPar{5}
\newpage
\noindent\LipsumPar{5}
\LipsumPar{6}
\end{document}