Мой шрифт моноширинный. Будет ли Latex считать его моноширинным или что мне делать?

Мой шрифт моноширинный. Будет ли Latex считать его моноширинным или что мне делать?

У меня есть пользовательский моноширинный шрифт. Я хочу написать весь документ с его помощью. Вывод 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}

введите описание изображения здесь

Что касается количества строк на странице, то это может заслуживать вашего внимания: Как ограничить максимальное количество строк на странице?

Связанный контент