我正在尝试编写一个代码,导出一系列十个“块”字符。我指的是ASCII 表。想象一下在以下 MWE 中用这样的字符代替“a”。
\documentclass[11pt, a4paper]{article}
\usepackage{ifthen}
\newcounter{WrittenWords}
\newcounter{WrittenCharacters}
\begin{document}
\setcounter{WrittenWords}{0}%
\whiledo{\value{WrittenWords}<50}{%
\addtocounter{WrittenWords}{1}%
\setcounter{WrittenCharacters}{0}%
\whiledo{\value{WrittenCharacters}<11}{%
\addtocounter{WrittenCharacters}{1}%
a%
}
}
\end{document}
我尝试复制粘贴它,但是不起作用,因为我使用的是 utf-8 字母表,而且显然它不包含该字符。
我尝试使用pmboxdraw
包和\textlfblock
命令,它可以工作,但它会在字符之间留一个空格。我希望它们连接在一起。
\amdsymbol
如果我使用该包和命令,情况也是一样\blacksquare
。
我发现,这个答案另一个问题是,是否存在命令\char
,我应该在命令后面放一个代码。我尝试\char32
在上面的代码中使用 而不是“a”,事实上,它可以按照我想要的方式打印那个奇怪的字符。问题是我不知道在哪里可以找到我的块字符的编号。我试着玩了一下,\char
据我所知,我必须放在它前面的数字不是字符的十进制数,也不是它的十六进制数。我没有在任何地方找到这种命令的解释,它链接到一个包含我需要的数字的表格。
答案1
这是一个使用\blacksquare
AMS 包的可能的“黑客”解决方案(如果您想避免textpos
和pmboxdraw
包之间的冲突)。
$\blacksquare\!$% with amssymb package
我认为与 的情况不同\textblock
,\blacksquare
从使用 可以看出有白色间距\fbox
。它们的大小也不同,因此您可以根据自己的目的考虑到这一点。
\fboxsep=0pt
\fbox{$\blacksquare$} % left
\fbox{\textblock} % right
无论如何,为了解决这个问题\blacksquare
,我发现使用\!
来消除间距是可行的。因此,完整的代码输出如下:
\documentclass[11pt, a4paper]{article}
\usepackage{amssymb}% <------------
\usepackage{ifthen}
\newcounter{WrittenWords}
\newcounter{WrittenCharacters}
\begin{document}
\noindent
\setcounter{WrittenWords}{0}%
\whiledo{\value{WrittenWords}<50}{%
\addtocounter{WrittenWords}{1}%
\setcounter{WrittenCharacters}{0}%
\whiledo{\value{WrittenCharacters}<11}{%
\addtocounter{WrittenCharacters}{1}%
$\blacksquare\!$% <------------
}
}
\end{document}
答案2
正如用户 Troy 所指出的,在包装的情况下,pmboxdraw
单个字符之间的间隙是由于所选字符是半块(\textlfblock
)而不是全块(\textblock
)造成的。通过使用\textblock
字符,实际上一个字符出现在另一个字符的旁边。
我在处理的主要文档中遇到了一些问题,其中textpos
已经定义命令的包发生了名称冲突问题\textblock
。解决方案取自对这个类似的问题\let\textblock\relax
,是在加载包之后textpos
但在加载包之前使用代码。这可能会在需要来自包的pmboxdraw
原始命令的情况下出现问题,但对我来说,这现在是可行的。textblock
textpos