
У меня есть пользовательский моноширинный шрифт. Я хочу написать весь документ с его помощью. Вывод Lorem Ipsum показывает, что мой моноширинный шрифт не отображается как моноширинный (т. е. некоторые символы сжимаются, вероятно, из-за алгоритмов рендеринга строк). Что мне нужно настроить на стороне LaTeX, чтобы это работало правильно? Я использую XeLaTeX.
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\usepackage{fullpage}
\setmainfont{MyFont}
\begin{document}
Hello world hello world Hello world hello world Hello world hello world Hello world hello worldHello world hello world Hello world hello worldHello world hello worldHello world hello world Hello world hello world Hello world hello world Hello world hello world Hello world hello world.
\end{document}
Я хотел бы настроить точное количество строк на странице и количество символов в строке (поскольку она моноширинная) или, по крайней мере, задать размер шрифта и сделать весь документ моноширинным этого размера.
решение1
Использование fullpage
не даст вам возможности задать количество символов в строке или количество строк на странице. Это можно сделать с помощью geometry
.
Однако выравнивание приведет к тому, что символы не будут выравниваться по вертикали, поскольку обычно невозможно, чтобы строки содержалиточныйколичество символов (включая пробелы). Если вам нужно вертикальное выравнивание, вам нужно \raggedright
и \frenchspacing
.
В примере я установил 72 символа (максимум) на строку и 48 строк на страницу.
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\usepackage{geometry}
\usepackage{kantlipsum}
\setmainfont{Latin Modern Mono}
\newlength{\characterwidth}
\settowidth{\characterwidth}{\normalfont x}
\geometry{textwidth=72\characterwidth,lines=48}
\AtBeginDocument{\raggedright\setlength{\parindent}{3\characterwidth}}
\frenchspacing
\begin{document}
\kant[1-4]
\end{document}
Первые строки с рамкой вокруг текстового блока, чтобы более наглядно показать, где находится проблема:
Как видите, первые две строки заканчиваются на поле, но в третьей не хватает двух символов до 72; даже при включенных переносах следующее слово не может вместиться, поскольку пробел будет считаться за символ, а дефис — за другой.
решение2
Пожалуйста, будьте более конкретны. По крайней мере, в отношении интервалов, flushleft
избегайте неравномерных интервалов.
%!TEX program=xelatex
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\usepackage{fullpage}
\setmainfont{DejaVu Sans Mono}
\begin{document}
\begin{flushleft}
Hello world hello world Hello world hello world Hello world hello world Hello world hello world Hello world hello world Hello world hello worldHello world hello worldHello world hello world Hello world hello world Hello world hello world Hello world hello world Hello world hello world.
\end{flushleft}
\end{document}
Что касается количества строк на странице, то это может заслуживать вашего внимания: Как ограничить максимальное количество строк на странице?